diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml new file mode 100644 index 0000000..dd551b9 --- /dev/null +++ b/.github/workflows/deploy-prod.yml @@ -0,0 +1,51 @@ +name: Prod deploy to EC2 on Push + +on: + push: + branches: [prod] + +env: + AWS_REGION: "us-east-1" + +# Permission can be added at job level or workflow level +permissions: + id-token: write # This is required for requesting the JWT + contents: read # This is required for actions/checkout +jobs: + DeployToCodeDeploy: + runs-on: ubuntu-latest + steps: + - name: Git clone the repository + uses: actions/checkout@v3 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1.7.0 + with: + role-to-assume: arn:aws:iam::471112976510:role/GitHubAction-AssumeRoleWithAction + role-session-name: GitHub_to_AWS_via_FederatedOIDC + aws-region: ${{ env.AWS_REGION }} + + # - name: Generate appspec.yml for prod + # run: cp appspec.yml appspec.yml + + - name: Set environment variables + id: vars + run: | + echo "DATETIME=$(date +'%Y-%m-%d_%H-%M-%S')" >> $GITHUB_ENV + echo "FILENAME=django-indexer-prod-${DATETIME}.zip" >> $GITHUB_ENV + echo "S3_BUCKET=django-indexer-prod" >> $GITHUB_ENV + + - name: Create zip of repository + run: zip -r "${{ env.FILENAME }}" . + + - name: Upload repository to S3 + run: aws s3 cp "${{ env.FILENAME }}" "s3://${{ env.S3_BUCKET }}/" + + - name: Create CodeDeploy Deployment + id: deploy + run: | + aws deploy create-deployment \ + --application-name django-indexer \ + --deployment-group-name django-indexer-prod \ + --deployment-config-name CodeDeployDefault.AllAtOnce \ + --s3-location bucket=${{ env.S3_BUCKET }},bundleType=zip,key=${{ env.FILENAME }} diff --git a/.gitignore b/.gitignore index 5d0a2fb..923869c 100644 --- a/.gitignore +++ b/.gitignore @@ -64,6 +64,7 @@ media/ # Celery beat schedule file celerybeat-schedule +dump.rdb # Flask stuff: instance/ @@ -99,7 +100,7 @@ poetry.lock # dotenv .env .env.* - +pyrightconfig.json # virtualenv .venv/ venv/ @@ -133,4 +134,4 @@ dmypy.json # static -/static/ \ No newline at end of file +/static/ diff --git a/README.md b/README.md index fc89206..da160fc 100644 --- a/README.md +++ b/README.md @@ -3,19 +3,26 @@ - [Steps to run:](#steps-to-run) - [Env vars example](#env-vars-example) - [API Basics](#api-basics) - - [Base URL](#base-url) - - [Authorization](#authorization) - - [Error Responses](#error-responses) - - [Pagination](#pagination) + - [Base URL](#base-url) + - [Authorization](#authorization) + - [Error Responses](#error-responses) + - [Pagination](#pagination) - [API Endpoints](#api-endpoints) - [`Account` endpoints](#account-endpoints) - [✅ Get all accounts: `GET /accounts` (paginated)](#-get-all-accounts-get-accounts-paginated) - [✅ Get account by ID (address): `GET /accounts/{ACCOUNT_ID}`](#-get-account-by-id-address-get-accountsaccount_id) + - [✅ Get donations received for account: `GET /accounts/{ACCOUNT_ID}/donations_received` (paginated)](#-get-donations-received-for-account-get-accountsaccount_iddonations_received-paginated) + - [✅ Get donations sent for account: `GET /accounts/{ACCOUNT_ID}/donations_sent` (paginated)](#-get-donations-sent-for-account-get-accountsaccount_iddonations_sent-paginated) - [✅ Get pots for account: `GET /accounts/{ACCOUNT_ID}/active_pots` (paginated)](#-get-pots-for-account-get-accountsaccount_idactive_pots-paginated) + - [✅ Get applications for account: `GET /accounts/{ACCOUNT_ID}/pot_applications` (paginated)](#-get-applications-for-account-get-accountsaccount_idpot_applications-paginated) + - [✅ Get registrations to lists by account: `GET /accounts/{ACCOUNT_ID}/list-registrations` (paginated)](#-get-registrations-to-lists-by-account-get-accountsaccount_idlist-registrations-paginated) - [`List` endpoints](#list-endpoints) - [✅ Get all lists: `GET /lists` (paginated)](#-get-all-lists-get-lists-paginated) - [✅ Get list by ID: `GET /lists/{LIST_ID}` (paginated)](#-get-list-by-id-get-listslist_id-paginated) - [✅ Get registrations for list: `GET /lists/{LIST_ID}/registrations` (paginated)](#-get-registrations-for-list-get-listslist_idregistrations-paginated) + - [✅ Get random registration for list: `GET /lists/{LIST_ID}/random_registration`](#-get-random-registration-for-list-get-listslist_idrandom_registration) + - [Donate Contract Config endpoint](#donate-contract-config-endpoint) + - [✅ Get donate contract config: `GET /donate_contract_config`](#-get-donate-contract-config-get-donate_contract_config) - [`Donors` endpoints](#donors-endpoints) - [✅ Get all donors: `GET /donors` (paginated)](#-get-all-donors-get-donors-paginated) - [`Pots` endpoints](#pots-endpoints) @@ -85,7 +92,7 @@ export PL_SENTRY_DSN= This is a public, read-only API and as such does not currently implement authentication or authorization. -Rate limits of 100 requests/min are enforced to ensure service for all users. +Rate limits of 500 requests/min are enforced to ensure service for all users. #### Error Responses @@ -102,7 +109,7 @@ Possible Error Codes: #### Pagination -Pagination available using `limit` and `offset` query params on endpoints that specify `paginated`. Default `limit` is 30. +Pagination available using `page` and `page_size` as query param on endpoints that specify `paginated`. Default `page_size` is 30. Endpoints that support pagination will return a success response containing the following: @@ -121,10 +128,31 @@ _NB: These endpoints are what is required to integrate with BOS app & replace cu #### ✅ Get account by ID (address): `GET /accounts/{ACCOUNT_ID}` +#### ✅ Get donations received for account: `GET /accounts/{ACCOUNT_ID}/donations_received` (paginated) + +#### ✅ Get donations sent for account: `GET /accounts/{ACCOUNT_ID}/donations_sent` (paginated) + #### ✅ Get pots for account: `GET /accounts/{ACCOUNT_ID}/active_pots` (paginated) Can specify `status=live` query param to retrieve only pots that are currently active (live matching round) +#### ✅ Get applications for account: `GET /accounts/{ACCOUNT_ID}/pot_applications` (paginated) + +Can specify `status={PotApplicationStatus}` query param to retrieve applications with a given status: + +```py +enum PotApplicationStatus { + Pending, + Approved, + Rejected, + InReview, +} +``` + +#### ✅ Get registrations to lists by account: `GET /accounts/{ACCOUNT_ID}/list-registrations` (paginated) + +Can specify status to filter by using `status` query param if desired, e.g. `status=Approved` + ### `List` endpoints #### ✅ Get all lists: `GET /lists` (paginated) @@ -134,6 +162,15 @@ Can specify `status=live` query param to retrieve only pots that are currently a #### ✅ Get registrations for list: `GET /lists/{LIST_ID}/registrations` (paginated) Can specify status to filter by using `status` query param if desired, e.g. `status=Approved` +Can also specify project category to filter by using `category` query param if desired, e.g. `category=Education` + +#### ✅ Get random registration for list: `GET /lists/{LIST_ID}/random_registration` + +Can specify status to filter by using `status` query param if desired, e.g. `status=Approved` + +### Donate Contract Config endpoint + +#### ✅ Get donate contract config: `GET /donate_contract_config` ### `Donors` endpoints diff --git a/accounts/admin.py b/accounts/admin.py index 3b8aca7..ec0b3c5 100644 --- a/accounts/admin.py +++ b/accounts/admin.py @@ -11,6 +11,7 @@ class AccountAdmin(admin.ModelAdmin): "total_donations_out_usd", "total_matching_pool_allocations_usd", "donors_count", + "near_social_profile_data", ) search_fields = ("id",) # Allow searching by account address list_filter = ( @@ -42,11 +43,11 @@ def total_matching_pool_allocations_usd_display(self, obj): "Total Matching Pool Allocations (USD)" ) - def has_add_permission(self, request): - return False + # def has_add_permission(self, request): + # return False - def has_change_permission(self, request, obj=None): - return False + # def has_change_permission(self, request, obj=None): + # return False - def has_delete_permission(self, request, obj=None): - return False + # def has_delete_permission(self, request, obj=None): + # return False diff --git a/accounts/api.py b/accounts/api.py index 99d1141..959522d 100644 --- a/accounts/api.py +++ b/accounts/api.py @@ -2,25 +2,81 @@ from django.utils import timezone from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_page -from rest_framework.pagination import LimitOffsetPagination +from drf_spectacular.utils import ( + OpenApiExample, + OpenApiParameter, + OpenApiResponse, + OpenApiTypes, + extend_schema, +) + from rest_framework.request import Request from rest_framework.response import Response from rest_framework.views import APIView +from api.pagination import pagination_parameters +from api.pagination import CustomSizePageNumberPagination from base.logging import logger from donations.models import Donation -from pots.models import Pot, PotApplication, PotApplicationStatus -from pots.serializers import PotSerializer +from donations.serializers import ( + PAGINATED_DONATION_EXAMPLE, + DonationSerializer, + PaginatedDonationsResponseSerializer, +) +from lists.models import List, ListRegistration, ListRegistrationStatus +from lists.serializers import PAGINATED_LIST_EXAMPLE, PAGINATED_LIST_REGISTRATION_EXAMPLE, ListRegistrationSerializer, ListSerializer, PaginatedListRegistrationsResponseSerializer, PaginatedListsResponseSerializer +from pots.models import Pot, PotApplication, PotApplicationStatus, PotPayout +from pots.serializers import ( + PAGINATED_PAYOUT_EXAMPLE, + PAGINATED_POT_APPLICATION_EXAMPLE, + PAGINATED_POT_EXAMPLE, + PaginatedPotApplicationsResponseSerializer, + PaginatedPotPayoutsResponseSerializer, + PaginatedPotsResponseSerializer, + PotApplicationSerializer, + PotPayoutSerializer, + PotSerializer, +) from .models import Account -from .serializers import AccountSerializer +from .serializers import ( + PAGINATED_ACCOUNT_EXAMPLE, + SIMPLE_ACCOUNT_EXAMPLE, + AccountSerializer, + PaginatedAccountsResponseSerializer, +) -class DonorsAPI(APIView, LimitOffsetPagination): - def dispatch(self, request, *args, **kwargs): - return super(DonorsAPI, self).dispatch(request, *args, **kwargs) +class DonorsAPI(APIView, CustomSizePageNumberPagination): - @method_decorator(cache_page(60 * 15)) # Cache for 15 mins + @extend_schema( + parameters=[ + OpenApiParameter( + name="sort", + type=str, + location=OpenApiParameter.QUERY, + description="Sort by field, e.g., most_donated_usd", + ), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedAccountsResponseSerializer, + description="Returns a paginated list of donor accounts", + examples=[ + OpenApiExample( + "example-1", + summary="user.near", + description="Example response for donor accounts", + value=PAGINATED_ACCOUNT_EXAMPLE, + response_only=True, + ), + ], + ), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) def get(self, request: Request, *args, **kwargs): # Return all donors donations_subquery = Donation.objects.filter(donor_id=OuterRef("pk")) @@ -36,47 +92,395 @@ def get(self, request: Request, *args, **kwargs): return self.get_paginated_response(serializer.data) -class AccountsAPI(APIView, LimitOffsetPagination): - def dispatch(self, request, *args, **kwargs): - return super(AccountsAPI, self).dispatch(request, *args, **kwargs) +class AccountsListAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedAccountsResponseSerializer, + description="Returns a paginated list of accounts", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for accounts data", + value=PAGINATED_ACCOUNT_EXAMPLE, + response_only=True, + ), + ], + ), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + accounts = Account.objects.all() + results = self.paginate_queryset(accounts, request, view=self) + serializer = AccountSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class AccountDetailAPI(APIView): - @method_decorator(cache_page(60 * 15)) # Cache for 15 mins + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + ], + responses={ + 200: OpenApiResponse( + response=AccountSerializer, + description="Returns account details", + examples=[ + OpenApiExample( + "example-1", + summary="user.near", + description="Example response for account detail", + value=SIMPLE_ACCOUNT_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) def get(self, request: Request, *args, **kwargs): - account_id = kwargs.get("account_id", None) - action = kwargs.get("action", None) - if account_id: - # Request pertaining to a specific account_id - try: - account = Account.objects.get(id=account_id) - except Account.DoesNotExist: + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + serializer = AccountSerializer(account) + return Response(serializer.data) + + +class AccountActivePotsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + OpenApiParameter( + "status", + str, + OpenApiParameter.QUERY, + required=False, + description="Filter by pot status", + ), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedPotsResponseSerializer, + description="Returns paginated active pots for the account", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for active pots", + value=PAGINATED_POT_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + + now = timezone.now() + applications = PotApplication.objects.filter( + applicant=account, status=PotApplicationStatus.APPROVED + ) + pot_ids = applications.values_list("pot_id", flat=True) + pots = Pot.objects.filter(account__in=pot_ids) + if request.query_params.get("status") == "live": + pots = pots.filter( + matching_round_start__lte=now, matching_round_end__gte=now + ) + results = self.paginate_queryset(pots, request, view=self) + serializer = PotSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class AccountPotApplicationsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + OpenApiParameter( + "status", + str, + OpenApiParameter.QUERY, + description="Filter pot applications by status", + ), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedPotApplicationsResponseSerializer, + description="Returns paginated pot applications for the account", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for pot applications", + value=PAGINATED_POT_APPLICATION_EXAMPLE, + response_only=True, + ), + ], + ), + 400: OpenApiResponse(description="Invalid status value"), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + + applications = PotApplication.objects.filter(applicant=account) + status_param = request.query_params.get("status") + if status_param: + if status_param not in PotApplicationStatus.values: return Response( - {"message": f"Account with ID {account_id} not found."}, status=404 + {"message": f"Invalid status value: {status_param}"}, status=400 ) - if action: - # Handle action if present; only valid option currently is "active_pots" - if action == "active_pots": - # Return active pots for account_id - now = timezone.now() - applications = PotApplication.objects.filter( - applicant=account, status=PotApplicationStatus.APPROVED - ) - pot_ids = applications.values_list("pot_id", flat=True) - pots = Pot.objects.filter(id__in=pot_ids) - if request.query_params.get("status") == "live": - pots = pots.filter( - matching_round_start__lte=now, matching_round_end__gte=now - ) - results = self.paginate_queryset(pots, request, view=self) - serializer = PotSerializer(results, many=True) - return self.get_paginated_response(serializer.data) - return Response({"message": f"Invalid action {action}."}, status=400) - # If no action, return account by account_id - else: - serializer = AccountSerializer(account) - return Response(serializer.data) - else: - # No account_id specified; return all accounts - accounts = Account.objects.all() - results = self.paginate_queryset(accounts, request, view=self) - serializer = AccountSerializer(results, many=True) - return self.get_paginated_response(serializer.data) + applications = applications.filter(status=status_param) + results = self.paginate_queryset(applications, request, view=self) + serializer = PotApplicationSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class AccountDonationsReceivedAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedDonationsResponseSerializer, + description="Returns paginated donations received by the account", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for donations received", + value=PAGINATED_DONATION_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + + donations = Donation.objects.prefetch_related('donor', 'pot', 'recipient', 'referrer', 'chef', 'token').filter(recipient=account) + results = self.paginate_queryset(donations, request, view=self) + serializer = DonationSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class AccountDonationsSentAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedDonationsResponseSerializer, + description="Returns paginated donations sent by the account", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for donations received", + value=PAGINATED_DONATION_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + + # donations = account.donations.select_related('donor', 'pot', 'recipient', 'referrer', 'chef', 'token').prefetch_related('pot__admins').all() + donations = account.donations.select_related('donor', 'pot', 'pot__deployer', 'pot__owner', 'pot__chef', 'recipient', 'referrer', 'chef', 'token').prefetch_related('pot__admins').all()# (donor=account) #TODO: this takes more time than just doing a prefetch_related for the fields. + results = self.paginate_queryset(donations, request, view=self) + serializer = DonationSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class AccountPayoutsReceivedAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedPotPayoutsResponseSerializer, + description="Returns paginated payouts received by the account", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for payouts received", + value=PAGINATED_PAYOUT_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + + payouts = PotPayout.objects.filter(recipient=account, paid_at__isnull=False) + results = self.paginate_queryset(payouts, request, view=self) + serializer = PotPayoutSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class AccountListRegistrationsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedListRegistrationsResponseSerializer, + description="Returns List registrations for the account provided", + examples=[ + OpenApiExample( + "example-1", + summary="Simple registration example", + description="Example response for list registrations", + value=PAGINATED_LIST_REGISTRATION_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + + registrations = ListRegistration.objects.filter(registrant=account).select_related('registered_by', 'registrant') + status_param = request.query_params.get("status") + if status_param: + if status_param not in ListRegistrationStatus.values: + return Response( + {"message": f"Invalid status value: {status_param}"}, status=400 + ) + registrations = registrations.filter(status=status_param) + results = self.paginate_queryset(registrations, request, view=self) + serializer = ListRegistrationSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + + +class AccountUpvotedListsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("account_id", str, OpenApiParameter.PATH), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedListsResponseSerializer, + description="Returns a paginated list of user upvoted lists", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for lists", + value=PAGINATED_LIST_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + def get(self, request: Request, *args, **kwargs): + account_id = kwargs.get("account_id") + try: + account = Account.objects.get(id=account_id) + except Account.DoesNotExist: + return Response( + {"message": f"Account with ID {account_id} not found."}, status=404 + ) + upvoted_lists = List.objects.filter(upvotes__account=account) + results = self.paginate_queryset(upvoted_lists, request, view=self) + serializer = ListSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + diff --git a/accounts/management/__init__.py b/accounts/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/accounts/management/commands/__init__.py b/accounts/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/accounts/management/commands/fetchsocialprofiledata.py b/accounts/management/commands/fetchsocialprofiledata.py new file mode 100644 index 0000000..030910d --- /dev/null +++ b/accounts/management/commands/fetchsocialprofiledata.py @@ -0,0 +1,23 @@ +import time + +from django.core.management.base import BaseCommand + +from accounts.models import Account + + +class Command(BaseCommand): + help = "Fetch social profile data for all accounts." + + def handle(self, *args, **options): + # Get all account addresses + account_addresses = [account.id for account in Account.objects.all()] + + # Fetch social profile data for each account + for address in account_addresses: + account = Account.objects.get(id=address) + account.fetch_near_social_profile_data() + self.stdout.write( + self.style.SUCCESS(f"Fetched social profile data for {address}") + ) + # wait for 1 second to avoid rate limiting + time.sleep(1) diff --git a/accounts/migrations/0002_account_near_social_profile_data.py b/accounts/migrations/0002_account_near_social_profile_data.py new file mode 100644 index 0000000..7641235 --- /dev/null +++ b/accounts/migrations/0002_account_near_social_profile_data.py @@ -0,0 +1,22 @@ +# Generated by Django 5.0.4 on 2024-06-05 14:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="account", + name="near_social_profile_data", + field=models.JSONField( + help_text="NEAR social data contained under 'profile' key.", + null=True, + verbose_name="NEAR social profile data", + ), + ), + ] diff --git a/accounts/migrations/0003_alter_account_options.py b/accounts/migrations/0003_alter_account_options.py new file mode 100644 index 0000000..d376807 --- /dev/null +++ b/accounts/migrations/0003_alter_account_options.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.6 on 2024-07-12 12:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0002_account_near_social_profile_data"), + ] + + operations = [ + migrations.AlterModelOptions( + name="account", + options={"ordering": ["id"]}, + ), + ] diff --git a/accounts/migrations/0004_account_chain.py b/accounts/migrations/0004_account_chain.py new file mode 100644 index 0000000..5fcbb89 --- /dev/null +++ b/accounts/migrations/0004_account_chain.py @@ -0,0 +1,28 @@ +# Generated by Django 5.0.4 on 2024-07-15 18:23 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0003_alter_account_options"), + ("chains", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="account", + name="chain", + field=models.ForeignKey( + blank=True, + help_text="Blockchain this account is located on.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="accounts", + related_query_name="account", + to="chains.chain", + ), + ), + ] diff --git a/accounts/migrations/0005_alter_account_chain.py b/accounts/migrations/0005_alter_account_chain.py new file mode 100644 index 0000000..2dbe9dd --- /dev/null +++ b/accounts/migrations/0005_alter_account_chain.py @@ -0,0 +1,26 @@ +# Generated by Django 5.0.4 on 2024-07-15 18:26 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0004_account_chain"), + ("chains", "0002_add_near_chain"), + ] + + operations = [ + migrations.AlterField( + model_name="account", + name="chain", + field=models.ForeignKey( + help_text="Blockchain this account is located on.", + on_delete=django.db.models.deletion.CASCADE, + related_name="accounts", + related_query_name="account", + to="chains.chain", + ), + ), + ] diff --git a/accounts/migrations/0006_alter_account_near_social_profile_data.py b/accounts/migrations/0006_alter_account_near_social_profile_data.py new file mode 100644 index 0000000..45dc3ea --- /dev/null +++ b/accounts/migrations/0006_alter_account_near_social_profile_data.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.6 on 2024-07-25 17:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0005_alter_account_chain"), + ] + + operations = [ + migrations.AlterField( + model_name="account", + name="near_social_profile_data", + field=models.JSONField( + blank=True, + help_text="NEAR social data contained under 'profile' key.", + null=True, + verbose_name="NEAR social profile data", + ), + ), + ] diff --git a/accounts/models.py b/accounts/models.py index 834c6de..a6175b0 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -1,7 +1,13 @@ +import requests +from asgiref.sync import sync_to_async from django import db +from django.conf import settings from django.db import models from django.utils.translation import gettext_lazy as _ +from base.logging import logger +from chains.models import Chain + class Account(models.Model): id = models.CharField( @@ -12,6 +18,15 @@ class Account(models.Model): validators=[], help_text=_("On-chain account address."), ) + chain = models.ForeignKey( + Chain, + null=False, + blank=False, + on_delete=models.CASCADE, + related_name="accounts", + related_query_name="account", + help_text=_("Blockchain this account is located on."), + ) total_donations_in_usd = models.DecimalField( _("total donations received in USD"), max_digits=20, @@ -39,5 +54,94 @@ class Account(models.Model): default=0, help_text=_("Number of donors."), ) + near_social_profile_data = models.JSONField( + _("NEAR social profile data"), + null=True, + blank=True, + help_text=_("NEAR social data contained under 'profile' key."), + ) + + class Meta: + ordering = ["id"] + + async def fetch_near_social_profile_data_async(self): + fetch_profile_data = sync_to_async(self.fetch_near_social_profile_data) + await fetch_profile_data() + + def fetch_near_social_profile_data(self, should_save=True): + # Fetch social profile data from NEAR blockchain + try: + url = f"{settings.FASTNEAR_RPC_URL}/account/{settings.NEAR_SOCIAL_CONTRACT_ADDRESS}/view/get" + keys_value = f'["{self.id}/profile/**"]' + params = {"keys.json": keys_value} + response = requests.get(url, params=params) + if response.status_code == 200: + data = response.json() + if self.id in data and "profile" in data[self.id]: + profile_data = data[self.id][ + "profile" + ] # TODO: validate/sanitize profile data? + # fetch NFT URLs if applicable + for image_type in ["image", "backgroundImage"]: + if ( + image_type in profile_data + and "nft" in profile_data[image_type] + and "contractId" in profile_data[image_type]["nft"] + and "tokenId" in profile_data[image_type]["nft"] + ): + contract_id = profile_data[image_type]["nft"]["contractId"] + token_id = profile_data[image_type]["nft"]["tokenId"] + # get base_uri + url = f"{settings.FASTNEAR_RPC_URL}/account/{contract_id}/view/nft_metadata" + response = requests.get(url) + if response.status_code == 200: + metadata = response.json() + if "base_uri" in metadata: + base_uri = metadata["base_uri"] + # store baseUri in profile_data + profile_data[image_type]["nft"][ + "baseUri" + ] = base_uri + else: + logger.error( + f"Request for NFT metadata failed ({response.status_code}) with message: {response.text}" + ) + # get token metadata + url = f"{settings.FASTNEAR_RPC_URL}/account/{contract_id}/view/nft_token" + json_data = {"token_id": token_id} + response = requests.post( + url, json=json_data + ) # using a POST request here so that token_id is not coerced into an integer on fastnear's side, causing a contract view error + if response.status_code == 200: + token_metadata = response.json() + if ( + "metadata" in token_metadata + and "media" in token_metadata["metadata"] + ): + # store media in profile_data + profile_data[image_type]["nft"]["media"] = ( + token_metadata["metadata"]["media"] + ) + else: + logger.error( + f"Request for NFT metadata failed ({response.status_code}) with message: {response.text}" + ) + self.near_social_profile_data = profile_data + if should_save: + self.save() + else: + logger.error( + f"Request for NEAR Social profile data failed ({response.status_code}) with message: {response.text}" + ) + except Exception as e: + logger.error(f"Error fetching NEAR social profile data: {e}") - # add Meta, properties & methods as necessary + def save(self, *args, **kwargs): + if self._state.adding: # If the account is being created (not updated) + if not self.chain_id: + # default to NEAR chain when none is provided + self.chain = Chain.objects.get(name="NEAR") + self.fetch_near_social_profile_data( + False # don't save yet as we want to avoid infinite loop + ) + super().save(*args, **kwargs) diff --git a/accounts/serializers.py b/accounts/serializers.py index e051984..91f5fa5 100644 --- a/accounts/serializers.py +++ b/accounts/serializers.py @@ -1,9 +1,64 @@ +from rest_framework import serializers from rest_framework.serializers import ModelSerializer, SerializerMethodField from .models import Account +# near social profile data serializers (for Swagger schema) + + +class NFTSerializer(serializers.Serializer): + media = serializers.URLField(required=False) + baseUri = serializers.URLField(required=False) + tokenId = serializers.CharField(required=False) + contractId = serializers.CharField(required=False) + + +class ImageSerializer(serializers.Serializer): + url = serializers.URLField(required=False) + ipfs_cid = serializers.CharField(required=False) + nft = NFTSerializer(required=False) + + +class LinktreeSerializer(serializers.Serializer): + github = serializers.CharField(required=False, allow_blank=True) + twitter = serializers.CharField(required=False, allow_blank=True) + website = serializers.CharField(required=False, allow_blank=True) + telegram = serializers.CharField(required=False, allow_blank=True) + + +class NearSocialProfileDataSerializer(serializers.Serializer): + name = serializers.CharField(required=False) + image = ImageSerializer(required=False) + backgroundImage = ImageSerializer(required=False) + description = serializers.CharField(required=False) + linktree = LinktreeSerializer(required=False) + plPublicGoodReason = serializers.CharField(required=False) + plCategories = serializers.CharField( + required=False, help_text="JSON-stringified array of category strings" + ) + plGithubRepos = serializers.CharField( + required=False, help_text="JSON-stringified array of URLs" + ) + plSmartContracts = serializers.CharField( + required=False, + help_text="JSON-stringified object with chain names as keys that map to nested objects of contract addresses", + ) + plFundingSources = serializers.CharField( + required=False, help_text="JSON-stringified array of funding source objects" + ) + plTeam = serializers.CharField( + required=False, + help_text="JSON-stringified array of team member account ID strings", + ) + +class ProjectInPairSerializer(serializers.ModelSerializer): + project_id = serializers.CharField(source='id') -class AccountSerializer(ModelSerializer): + class Meta: + model = Account + fields = ['project_id'] + +class AccountSerializer(serializers.ModelSerializer): class Meta: model = Account fields = [ @@ -12,4 +67,62 @@ class Meta: "total_donations_out_usd", "total_matching_pool_allocations_usd", "donors_count", + "near_social_profile_data", ] + + total_donations_in_usd = serializers.DecimalField( + max_digits=20, decimal_places=2, coerce_to_string=False + ) + total_donations_out_usd = serializers.DecimalField( + max_digits=20, decimal_places=2, coerce_to_string=False + ) + total_matching_pool_allocations_usd = serializers.DecimalField( + max_digits=20, decimal_places=2, coerce_to_string=False + ) + donors_count = serializers.IntegerField() + near_social_profile_data = NearSocialProfileDataSerializer(required=False) + + +SIMPLE_ACCOUNT_EXAMPLE = { + "id": "user.near", + "total_donations_in_usd": "740.00", + "total_donations_out_usd": "1234.56", + "total_matching_pool_allocations_usd": "800.01", + "donors_count": 321, + "near_social_profile_data": { + "name": "Illia", + "image": { + "nft": { + "media": "https://ipfs.nftstorage.link/ipfs/bafybeie6mpnk6iya3wvwtxtogzmzpprw5734dydoeujo5esqqxmmirug6y", + "baseUri": "https://arweave.net/q8IenkSo5aogF-bIphzedrom24OFYGECZYUs9gEfM0A", + "tokenId": "8120", + "contractId": "citizen.bodega-lab.near", + } + }, + "linktree": { + "github": "ilblackdragon", + "twitter": "ilblackdragon", + "website": "near.org", + "telegram": "", + }, + "description": "Bringing 1B users to web3", + "horizon_tnc": "true", + "backgroundImage": { + "ipfs_cid": "bafkreiemktmsdhpdoomwlvfi2ztm7c5sdqdmb2z5mg4bjssoqkz7wunaoi" + }, + }, +} + +PAGINATED_ACCOUNT_EXAMPLE = { + "count": 1, + "next": None, + "previous": None, + "results": [SIMPLE_ACCOUNT_EXAMPLE], +} + + +class PaginatedAccountsResponseSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.CharField(allow_null=True) + previous = serializers.CharField(allow_null=True) + results = AccountSerializer(many=True) diff --git a/activities/admin.py b/activities/admin.py index 219e369..e1ade60 100644 --- a/activities/admin.py +++ b/activities/admin.py @@ -19,6 +19,7 @@ class ActivityAdmin(admin.ModelAdmin): search_fields = ("signer__id", "receiver__id", "tx_hash") date_hierarchy = "timestamp" ordering = ("-timestamp",) + autocomplete_fields = ["signer", "receiver"] def signer_address(self, obj): return obj.signer.id @@ -42,11 +43,11 @@ def transaction_link(self, obj): # return "Has Result" if obj.action_result else "No Result" # action_result_summary.short_description = 'Action Result' - def has_add_permission(self, request): - return False + # def has_add_permission(self, request): + # return False - def has_change_permission(self, request, obj=None): - return False + # def has_change_permission(self, request, obj=None): + # return False - def has_delete_permission(self, request, obj=None): - return False + # def has_delete_permission(self, request, obj=None): + # return False diff --git a/activities/migrations/0004_alter_activity_tx_hash.py b/activities/migrations/0004_alter_activity_tx_hash.py new file mode 100644 index 0000000..7dbece2 --- /dev/null +++ b/activities/migrations/0004_alter_activity_tx_hash.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.4 on 2024-06-13 14:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("activities", "0003_alter_activity_unique_together"), + ] + + operations = [ + migrations.AlterField( + model_name="activity", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + max_length=64, + null=True, + verbose_name="transaction hash", + ), + ), + ] diff --git a/activities/migrations/0005_alter_activity_action_result_alter_activity_tx_hash.py b/activities/migrations/0005_alter_activity_action_result_alter_activity_tx_hash.py new file mode 100644 index 0000000..039c2a5 --- /dev/null +++ b/activities/migrations/0005_alter_activity_action_result_alter_activity_tx_hash.py @@ -0,0 +1,34 @@ +# Generated by Django 5.0.6 on 2024-07-25 17:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("activities", "0004_alter_activity_tx_hash"), + ] + + operations = [ + migrations.AlterField( + model_name="activity", + name="action_result", + field=models.JSONField( + blank=True, + help_text="Activity action result.", + null=True, + verbose_name="action result", + ), + ), + migrations.AlterField( + model_name="activity", + name="tx_hash", + field=models.CharField( + blank=True, + help_text="Transaction hash.", + max_length=64, + null=True, + verbose_name="transaction hash", + ), + ), + ] diff --git a/activities/models.py b/activities/models.py index b1bab6d..274a0e3 100644 --- a/activities/models.py +++ b/activities/models.py @@ -48,12 +48,14 @@ class Activity(models.Model): action_result = models.JSONField( _("action result"), null=True, + blank=True, help_text=_("Activity action result."), ) tx_hash = models.CharField( _("transaction hash"), max_length=64, - null=False, + null=True, + blank=True, help_text=_("Transaction hash."), ) type = models.CharField( diff --git a/api/pagination.py b/api/pagination.py new file mode 100644 index 0000000..95e6edb --- /dev/null +++ b/api/pagination.py @@ -0,0 +1,24 @@ +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import OpenApiParameter +from rest_framework.pagination import PageNumberPagination + + + +# ovveeride PageNumberPagination to add page_size_query_param alias +class CustomSizePageNumberPagination(PageNumberPagination): + page_size_query_param = 'page_size' + +pagination_parameters = [ + OpenApiParameter( + "page", + OpenApiTypes.INT, + OpenApiParameter.QUERY, + description="Page number for pagination", + ), + OpenApiParameter( + "page_size", + OpenApiTypes.INT, + OpenApiParameter.QUERY, + description="Number of results per page", + ), +] diff --git a/api/urls.py b/api/urls.py index dda1608..dfb3d44 100644 --- a/api/urls.py +++ b/api/urls.py @@ -1,39 +1,171 @@ from django.urls import path +from drf_spectacular.views import ( + SpectacularAPIView, + SpectacularRedocView, + SpectacularSwaggerView, +) -from accounts.api import AccountsAPI, DonorsAPI -from base.api import StatsAPI -from lists.api import ListsAPI -from pots.api import PotsAPI +from accounts.api import ( + AccountActivePotsAPI, + AccountDetailAPI, + AccountDonationsReceivedAPI, + AccountDonationsSentAPI, + AccountListRegistrationsAPI, + AccountPayoutsReceivedAPI, + AccountPotApplicationsAPI, + AccountUpvotedListsAPI, + AccountsListAPI, + DonorsAPI, +) +from base.api import StatsAPI, ReclaimProofRequestView +from donations.api import DonationContractConfigAPI +from grantpicks.api import AccountProjectListAPI, ProjectListAPI, ProjectRoundVotesAPI, ProjectStatsAPI, RoundApplicationsAPI, RoundDetailAPI, RoundsListAPI +from lists.api import ( + ListDetailAPI, + ListRandomRegistrationAPI, + ListRegistrationsAPI, + ListsListAPI, +) +from pots.api import ( + MpdaoVotersListAPI, + MpdaoVoterDetailAPI, + PotApplicationsAPI, + PotDetailAPI, + PotDonationsAPI, + PotFactoriesAPI, + PotPayoutsAPI, + PotsListAPI, + PotSponsorsAPI, +) urlpatterns = [ + # schema + path("schema/", SpectacularAPIView.as_view(), name="schema"), + path( + "schema/swagger-ui/", + SpectacularSwaggerView.as_view(url_name="schema"), + name="swagger-ui", + ), + path( + "schema/redoc/", SpectacularRedocView.as_view(url_name="schema"), name="redoc" + ), # accounts - path("v1/accounts", AccountsAPI.as_view(), name="accounts_api"), + path("v1/accounts", AccountsListAPI.as_view(), name="accounts_api"), + path( + "v1/accounts/", + AccountDetailAPI.as_view(), + name="accounts_api_by_id", + ), + path( + "v1/accounts//active_pots", + AccountActivePotsAPI.as_view(), + name="accounts_api_by_id_active_pots", + ), + path( + "v1/accounts//pot_applications", + AccountPotApplicationsAPI.as_view(), + name="accounts_api_by_id_pot_applications", + ), + path( + "v1/accounts//donations_received", + AccountDonationsReceivedAPI.as_view(), + name="accounts_api_by_id_donations_received", + ), + path( + "v1/accounts//donations_sent", + AccountDonationsSentAPI.as_view(), + name="accounts_api_by_id_donations_sent", + ), + path( + "v1/accounts//payouts_received", + AccountPayoutsReceivedAPI.as_view(), + name="accounts_api_by_id_payouts_received", + ), + path( + "v1/accounts//list-registrations", + AccountListRegistrationsAPI.as_view(), + name="accounts_api_by_id_registrations", + ), + path( + "v1/accounts//upvoted-lists", + AccountUpvotedListsAPI.as_view(), + name="accounts_api_upvoted_lists", + ), path( - "v1/accounts/", AccountsAPI.as_view(), name="accounts_api_by_id" + "v1/accounts//rounds", + RoundsListAPI.as_view(), + name="accounts_api_rounds", ), + # donate contract config path( - "v1/accounts//", # e.g. /accounts/lachlan.near/active_pots - consider putting this under /pots instead of /accounts since Pots are the resource being fetched, even though the action is being performed on an Account - AccountsAPI.as_view(), - name="accounts_api_by_id_with_action", + "v1/donate_contract_config", + DonationContractConfigAPI.as_view(), + name="donate_contract_config_api", ), # donors path("v1/donors", DonorsAPI.as_view(), name="donors_api"), # lists - path("v1/lists", ListsAPI.as_view(), name="lists_api"), - path("v1/lists/", ListsAPI.as_view(), name="lists_api_by_id"), + path("v1/lists", ListsListAPI.as_view(), name="lists_api"), + path("v1/lists/", ListDetailAPI.as_view(), name="lists_api_by_id"), + path( + "v1/lists//registrations", + ListRegistrationsAPI.as_view(), + name="lists_api_by_id_registrations", + ), path( - "v1/lists//", # e.g. /lists/1/registrations - ListsAPI.as_view(), - name="lists_api_by_id_with_action", + "v1/lists//random_registration", + ListRandomRegistrationAPI.as_view(), + name="lists_api_by_id_registrations", ), # pots - path("v1/pots", PotsAPI.as_view(), name="pots_api"), - path("v1/pots//", PotsAPI.as_view(), name="pots_api_by_id"), + path("v1/pots", PotsListAPI.as_view(), name="pots_api"), + path("v1/pots//", PotDetailAPI.as_view(), name="pots_api_by_id"), + path( + "v1/pots//applications", + PotApplicationsAPI.as_view(), + name="pots_applications_api", + ), path( - "v1/pots//", - PotsAPI.as_view(), - name="pots_api_by_id_with_action", + "v1/pots//donations", + PotDonationsAPI.as_view(), + name="pots_donations_api", + ), + path( + "v1/pots//sponsors", + PotSponsorsAPI.as_view(), + name="pots_sponsors_api", + ), + path( + "v1/pots//payouts", PotPayoutsAPI.as_view(), name="pots_payouts_api" + ), + path( + "v1/potfactories", PotFactoriesAPI.as_view(), name="pot_factories_api" ), # stats path("v1/stats", StatsAPI.as_view(), name="stats_api"), + path("v1/reclaim/generate-request", ReclaimProofRequestView.as_view(), name="stats_api"), + + # grantpicks + path("v1/rounds", RoundsListAPI.as_view(), name="rounds_api"), + path("v1/round//", RoundDetailAPI.as_view(), name="rounds_api_by_id"), + path("v1/round///votes", ProjectRoundVotesAPI.as_view(), name="project_round_votes_api_by_id"), + path("v1/projects", ProjectListAPI.as_view(), name="projects_api"), + path( + "v1/rounds//applications", + RoundApplicationsAPI.as_view(), + name="rounds_applications_api", + ), + path("v1//projects", AccountProjectListAPI.as_view(), name="user_projects_api"), + path("v1//project-stats", ProjectStatsAPI.as_view(), name="projects_stat__api"), + + path( + "v1/mpdao/voters", + MpdaoVotersListAPI.as_view(), + name="mpdao_voters_list", + ), + path( + "v1/mpdao/voters/", + MpdaoVoterDetailAPI.as_view(), + name="mpdao_voter_detail", + ), ] diff --git a/base/api.py b/base/api.py index ef52d70..e0b1662 100644 --- a/base/api.py +++ b/base/api.py @@ -1,17 +1,34 @@ -from django.db.models import Count, Exists, OuterRef, Sum -from django.utils import timezone +from django.db.models import Sum +from django.http import JsonResponse from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_page -from rest_framework.pagination import LimitOffsetPagination +from drf_spectacular.utils import ( + OpenApiExample, + OpenApiResponse, + extend_schema, +) +from django.conf import settings +from asgiref.sync import async_to_sync +from rest_framework import serializers from rest_framework.request import Request from rest_framework.response import Response from rest_framework.views import APIView - +from reclaim_python_sdk import ReclaimProofRequest from accounts.models import Account from donations.models import Donation from pots.models import PotPayout +class StatsResponseSerializer(serializers.Serializer): + total_donations_usd = serializers.FloatField() + total_payouts_usd = serializers.FloatField() + total_donations_count = serializers.IntegerField() + total_donors_count = serializers.IntegerField() + total_recipients_count = serializers.IntegerField() + +class ReclaimProofRequestConfigSerializer(serializers.Serializer): + reclaimProofRequestConfig = serializers.CharField() + class StatsAPI(APIView): def dispatch(self, request, *args, **kwargs): return super(StatsAPI, self).dispatch(request, *args, **kwargs) @@ -19,6 +36,30 @@ def dispatch(self, request, *args, **kwargs): @method_decorator( cache_page(60 * 5) ) # Cache for 5 mins (using page-level caching for now for simplicity, but can move to data-level caching if desired) + @extend_schema( + responses={ + 200: OpenApiResponse( + response=StatsResponseSerializer, + description="Returns statistics data", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for statistics data", + value={ + "total_donations_usd": 12345.67, + "total_payouts_usd": 8901.23, + "total_donations_count": 456, + "total_donors_count": 789, + "total_recipients_count": 321, + }, + response_only=True, + ), + ], + ), + 500: OpenApiResponse(description="Internal server error"), + } + ) def get(self, request: Request, *args, **kwargs): total_donations_usd = ( Donation.objects.all().aggregate(Sum("total_amount_usd"))[ @@ -49,3 +90,45 @@ def get(self, request: Request, *args, **kwargs): "total_recipients_count": total_recipients_count, } ) + + +class ReclaimProofRequestView(APIView): + + @extend_schema( + responses={ + 200: OpenApiResponse( + response=ReclaimProofRequestConfigSerializer, + description="Returns Reclaim proof request configuration", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for Reclaim proof request config", + value={ + "reclaimProofRequestConfig": "{}" + }, + response_only=True, + ), + ], + ), + 500: OpenApiResponse(description="Internal server error"), + } + ) + def post(self, request: Request, *args, **kwargs): + APP_ID = settings.RECLAIM_APP_ID + APP_SECRET = settings.RECLAIM_APP_SECRET + PROVIDER_ID = settings.RECLAIM_TWITTER_PROVIDER_ID + + platform = request.query_params.get("platform") + handle = request.query_params.get("handle") + + try: + reclaim_proof_func = async_to_sync(ReclaimProofRequest.init) + reclaim_proof_request = reclaim_proof_func(APP_ID, APP_SECRET, PROVIDER_ID, {"context": {"handle": handle}}) + # reclaim_proof_request.set_app_callback_url("https://your-backend.com/receive-proofs") + reclaim_proof_request_config = reclaim_proof_request.to_json_string() + + return JsonResponse({"reclaimProofRequestConfig": reclaim_proof_request_config}) + except Exception as error: + print(f"Error generating request config: {error}") + return JsonResponse({"error": "Failed to generate request config"}, status=500) diff --git a/base/celery.py b/base/celery.py index 1aa4d8f..9ba059d 100644 --- a/base/celery.py +++ b/base/celery.py @@ -35,9 +35,29 @@ "schedule": crontab(minute="*/5"), # Executes every 5 minutes "options": {"queue": "beat_tasks"}, }, + "update_pot_statistics_every_5_minutes": { + "task": "indexer_app.tasks.update_pot_statistics", + "schedule": crontab(minute="*/5"), # Executes every 5 minutes + "options": {"queue": "beat_tasks"}, + }, + "fetch_stellar_events_every_minute": { + "task": "indexer_app.tasks.stellar_event_indexer", + "schedule": crontab(minute="*/1"), # Executes every 1 minutes + "options": {"queue": "beat_tasks"}, + }, + "process_stellar_event_every_minute": { + "task": "indexer_app.tasks.process_stellar_events", + "schedule": crontab(minute="*/1"), # Executes every 1 minutes + "options": {"queue": "beat_tasks"}, + }, } app.conf.task_routes = { "indexer_app.tasks.update_account_statistics": {"queue": "beat_tasks"}, "indexer_app.tasks.fetch_usd_prices": {"queue": "beat_tasks"}, + "indexer_app.tasks.update_pot_statistics": {"queue": "beat_tasks"}, + "indexer_app.tasks.stellar_event_indexer": {"queue": "beat_tasks"}, + "indexer_app.tasks.process_stellar_events": {"queue": "beat_tasks"}, } + +SPOT_INDEXER_QUEUE_NAME = "spot_indexing" diff --git a/base/serializers.py b/base/serializers.py new file mode 100644 index 0000000..0437351 --- /dev/null +++ b/base/serializers.py @@ -0,0 +1,8 @@ +from rest_framework import serializers + + +class TwoDecimalPlacesField(serializers.DecimalField): + def to_representation(self, value): + if value is None: + return value + return format(value, ".2f") # 2 decimal places diff --git a/base/settings.py b/base/settings.py index 5125bbf..4c489fa 100644 --- a/base/settings.py +++ b/base/settings.py @@ -28,13 +28,16 @@ # SECURITY WARNING: keep the secret key used in production secret! # TODO: update before prod release -SECRET_KEY = "django-insecure-=r_v_es6w6rxv42^#kc2hca6p%=fe_*cog_5!t%19zea!enlju" +SECRET_KEY = os.environ.get("PL_DJANGO_SECRET_KEY", "django-insecure-=r_v_es6w6rxv42^#kc2hca6p%=fe_*cog_5!t%19zea!enlju") ALLOWED_HOSTS = [ "ec2-100-27-57-47.compute-1.amazonaws.com", + "ec2-44-208-38-31.compute-1.amazonaws.com", "127.0.0.1", "dev.potlock.io", "test-dev.potlock.io", + "api.potlock.io" + # "alpha.potlock.io", ] # Env vars @@ -56,8 +59,36 @@ REDIS_HOST = os.environ.get("PL_REDIS_HOST", "localhost") REDIS_PORT = os.environ.get("PL_REDIS_PORT", 6379) SENTRY_DSN = os.environ.get("PL_SENTRY_DSN") - -POTLOCK_TLA = "potlock.testnet" if ENVIRONMENT == "testnet" else "potlock.near" +RECLAIM_APP_ID = os.environ.get("PL_RECLAIM_APP_ID") +RECLAIM_APP_SECRET = os.environ.get("PL_RECLAIM_APP_SECRET") +RECLAIM_TWITTER_PROVIDER_ID = os.environ.get("PL_RECLAIM_TWITTER_PROVIDER_ID") + +# POTLOCK_TLA = "potlock.testnet" if ENVIRONMENT == "testnet" else "potlock.near" +POTLOCK_TLA = "potlock.testnet" if ENVIRONMENT == "testnet" else ("staging.potlock.near" if ENVIRONMENT == "dev" else "potlock.near") +# NADABOT_TLA = "nadabot.testnet" if ENVIRONMENT == "testnet" else "nadabot.near" +NADABOT_TLA = "nadabot.testnet" if ENVIRONMENT == "testnet" else ("staging.nadabot.near" if ENVIRONMENT == "dev" else "nadabot.near") +STELLAR_CONTRACT_ID = "CA7A2776JYIOYXPAJFONDC7BVPDWWLZU524UTGIJIQH6HWWOR6LKYQQT" if ENVIRONMENT == "testnet" else ("" if ENVIRONMENT == "dev" else "") +STELLAR_PROJECTS_REGISTRY_CONTRACT = "CA56XSY7YEZ7CJ5FYG7YODQIWE3JNRGZ5S7E7VJAQ675KDS4BLZJ5NJH" if ENVIRONMENT == "testnet" else ("" if ENVIRONMENT == "dev" else "") +NEAR_SOCIAL_CONTRACT_ADDRESS = ( + "v1.social08.testnet" if ENVIRONMENT == "testnet" else "social.near" +) +NEAR_GRANTPICKS_CONTRACT_ID = "v2.grantpicks.potlock.testnet" if ENVIRONMENT == "testnet" else ("" if ENVIRONMENT == "dev" else "") +# TODO: split settigns file by enviroment +if ENVIRONMENT == "testnet": + POTLOCK_PATTERN = r'\.potlock\.testnet$' + NADABOT_PATTERN = r'\.nadabot\.testnet$' +elif ENVIRONMENT == "dev": + POTLOCK_PATTERN = r'\.staging\.potlock\.near$' + NADABOT_PATTERN = r'\.staging\.nadabot\.near$' +else: # mainnet/prod + POTLOCK_PATTERN = r'(?, + /// Timestamp when the donation was made + pub donated_at: TimestampMs, + /// ID of the project receiving the donation, if applicable (matching pool donations will contain `None`) + pub project_id: Option, + /// Referrer ID + pub referrer_id: Option, + /// Referrer fee + pub referrer_fee: Option, + /// Protocol fee + pub protocol_fee: U128, + /// Indicates whether this is matching pool donation + pub matching_pool: bool, + /// Chef ID + pub chef_id: Option, + /// Chef fee + pub chef_fee: Option, +} + +# DIRECT DONATION: + +pub struct DonationExternal { + /// Unique identifier for the donation + pub id: DonationId, + /// ID of the donor + pub donor_id: AccountId, + /// Amount donated + pub total_amount: U128, + /// FT id (e.g. "near") + pub ft_id: AccountId, + /// Optional message from the donor + pub message: Option, + /// Timestamp when the donation was made + pub donated_at_ms: TimestampMs, + /// ID of the account receiving the donation + pub recipient_id: AccountId, + /// Protocol fee + pub protocol_fee: U128, + /// Referrer ID + pub referrer_id: Option, + /// Referrer fee + pub referrer_fee: Option, +} \ No newline at end of file diff --git a/indexer_app/handler.py b/indexer_app/handler.py index 1981fb3..c620820 100644 --- a/indexer_app/handler.py +++ b/indexer_app/handler.py @@ -1,66 +1,116 @@ +import asyncio import base64 import json +import time from datetime import datetime +from asgiref.sync import sync_to_async + from django.conf import settings from django.core.cache import cache from near_lake_framework import near_primitives +from stellar_sdk.soroban_rpc import GetEventsResponse + from base.utils import convert_ns_to_utc -from pots.utils import match_pot_factory_pattern, match_pot_subaccount_pattern +from grantpicks.models import StellarEvent +from nadabot.utils import match_nadabot_registry_pattern +from pots.utils import is_relevant_account, match_pot_factory_pattern, match_pot_subaccount_pattern -from .logging import logger +from .logging import log_memory_usage, logger from .utils import ( - handle_batch_donations, + create_or_update_round, + create_round_application, + create_round_payout, + handle_add_nadabot_admin, # handle_batch_donations, + handle_add_stamp, handle_default_list_status_change, - handle_list_admin_removal, + handle_delete_list, + handle_list_admin_ops, + handle_list_owner_change, + handle_list_registration_removal, handle_list_registration_update, + handle_list_update, handle_list_upvote, - handle_new_donations, + handle_new_donation, + handle_new_group, handle_new_list, + handle_new_list_and_reg, handle_new_list_registration, + handle_new_nadabot_registry, handle_new_pot, handle_new_pot_factory, + handle_new_provider, handle_payout_challenge, handle_payout_challenge_response, handle_pot_application, handle_pot_application_status_change, + handle_pot_config_update, + handle_registry_blacklist_action, + handle_registry_unblacklist_action, + handle_remove_upvote, + handle_set_factory_configs, handle_set_payouts, + handle_social_profile_update, handle_transfer_payout, + handle_update_default_human_threshold, + process_rounds_deposit_event, + process_vote_event, + update_application, + update_round_payout, ) async def handle_streamer_message(streamer_message: near_primitives.StreamerMessage): + start_time = time.time() + log_memory_usage("Start of handle_streamer_message") + block_timestamp = streamer_message.block.header.timestamp block_height = streamer_message.block.header.height - await cache.aset( - "block_height", block_height - ) # TODO: add custom timeout if it should be valid for longer than default (5 minutes) + now_datetime = datetime.fromtimestamp(block_timestamp / 1000000000) + # # Fire and forget the cache update + # asyncio.create_task(cache.aset("block_height", block_height)) + # await cache.aset( + # "block_height", block_height + # ) # TODO: add custom timeout if it should be valid for longer than default (5 minutes) formatted_date = convert_ns_to_utc(block_timestamp) logger.info( f"Block Height: {block_height}, Block Timestamp: {block_timestamp} ({formatted_date})" ) + # logger.info( + # f"Time after processing block info: {time.time() - start_time:.4f} seconds" + # ) + # log_memory_usage("After processing block info") # if block_height == 111867204: # with open("indexer_outcome2.json", "w") as file: # file.write(f"{streamer_message}") - for shard in streamer_message.shards: - for receipt_execution_outcome in shard.receipt_execution_outcomes: - # we only want to proceed if it's a potlock tx and it succeeded.... (unreadable if statement?) - lists_contract = "lists." + settings.POTLOCK_TLA - if not receipt_execution_outcome.receipt.receiver_id.endswith( - settings.POTLOCK_TLA - ) or ( + for shard_index, shard in enumerate(streamer_message.shards): + shard_start_time = time.time() + for outcome_index, receipt_execution_outcome in enumerate( + shard.receipt_execution_outcomes + ): + # we only want to proceed if the tx succeeded + if ( "SuccessReceiptId" not in receipt_execution_outcome.execution_outcome.outcome.status and "SuccessValue" not in receipt_execution_outcome.execution_outcome.outcome.status ): continue + receiver_id = receipt_execution_outcome.receipt.receiver_id + if ( + receiver_id != settings.NEAR_SOCIAL_CONTRACT_ADDRESS + and not is_relevant_account(receiver_id) + ): + continue # 1. HANDLE LOGS - log_data = [] + receipt = receipt_execution_outcome.receipt + signer_id = receipt.receipt["Action"]["signer_id"] + LISTS_CONTRACT = "lists." + settings.POTLOCK_TLA + log_processing_start = time.time() for log_index, log in enumerate( receipt_execution_outcome.execution_outcome.outcome.logs, start=1 ): @@ -68,6 +118,93 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess continue try: parsed_log = json.loads(log[len("EVENT_JSON:") :]) + event_name = parsed_log.get("event") + print("parsa parsa...", parsed_log) + if event_name == "update_pot_config": + await handle_pot_config_update( + parsed_log.get("data")[0], receiver_id + ) + + if event_name == "add_or_update_provider": + await handle_new_provider( + parsed_log.get("data")[0], receiver_id, signer_id + ) + elif event_name == "add_stamp": + await handle_add_stamp( + parsed_log.get("data")[0], receiver_id, signer_id + ) + elif event_name == "update_default_human_threshold": + await handle_update_default_human_threshold( + parsed_log.get("data")[0], receiver_id + ) + if event_name == "add_or_update_group": + await handle_new_group(parsed_log.get("data")[0], now_datetime) + if event_name == "blacklist_account": + await handle_registry_blacklist_action( + parsed_log.get("data")[0], receiver_id, now_datetime + ) + if event_name == "unblacklist_account": + await handle_registry_unblacklist_action( + parsed_log.get("data")[0], receiver_id, now_datetime + ) + if event_name == "delete_list": + await handle_delete_list( + parsed_log.get("data")[0] + ) + if event_name == "owner_transfer": + if receiver_id != LISTS_CONTRACT: + continue + await handle_list_owner_change( + parsed_log.get("data")[0] + ) + if event_name == "update_admins": + if receiver_id != LISTS_CONTRACT: + continue + await handle_list_admin_ops( + parsed_log.get("data")[0], receiver_id, signer_id, receipt.receipt_id + ) + if event_name == "update_list": + if receiver_id != LISTS_CONTRACT: + continue + await handle_list_update( + receiver_id, signer_id, None, parsed_log.get("data")[0], + ) + if event_name == "create_round" or event_name == "round_updated": + create_or_update_round_async = sync_to_async(create_or_update_round) + await create_or_update_round_async( + parsed_log.get("data")[0], receiver_id, now_datetime, "NEAR" + ) + if event_name == "deposit": + round_depo = sync_to_async(process_rounds_deposit_event) + await round_depo(parsed_log.get("data")[0], receipt.receipt_id, "NEAR") + if event_name == "application_created": + create_round_application_async = sync_to_async(create_round_application) + await create_round_application_async( + parsed_log.get("data")[0], receipt.receipt_id, "NEAR" + ) + if event_name == "application_updated": + update_application_async = sync_to_async(update_application) + await update_application_async( + parsed_log.get("data")[0], receipt.receipt_id, signer_id, "NEAR" + ) + if event_name == "vote": + if receiver_id == settings.NEAR_GRANTPICKS_CONTRACT_ID: + process_vote_event_async = sync_to_async(process_vote_event) + await process_vote_event_async( + parsed_log.get("data")[0], receipt.receipt_id, "NEAR" + ) + if event_name == "payouts_set": + create_round_payout_aync = sync_to_async(create_round_payout) + await create_round_payout_aync( + parsed_log.get("data")[0], receipt.receipt_id, "NEAR" + ) + if event_name == "payout_processed": + update_round_payout_aync = sync_to_async(update_round_payout) + await update_round_payout_aync( + parsed_log.get("data")[0], receipt.receipt_id, "NEAR" + ) + if event_name == "payouts_challenge_created": + pass except json.JSONDecodeError: logger.warning( f"Receipt ID: `{receipt_execution_outcome.receipt.receipt_id}`\nError during parsing logs from JSON string to dict" @@ -78,6 +215,11 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess # TODO: handle set_source_metadata logs for various contracts + # logger.info( + # f"Time to process logs for receipt {receipt_execution_outcome.receipt.receipt_id}: {time.time() - log_processing_start:.4f} seconds" + # ) + # log_memory_usage("After processing logs") + # 2. HANDLE METHOD CALLS # Skip if the tx failed # if ( @@ -89,24 +231,26 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess # # consider logging failures to logging service; for now, just skip # print("here we are...") # continue + # method_call_processing_start = time.time() + DONATE_CONTRACT = "donate." + settings.POTLOCK_TLA for index, action in enumerate( receipt_execution_outcome.receipt.receipt["Action"]["actions"] ): if "FunctionCall" not in action: continue - receipt = receipt_execution_outcome.receipt + # receipt = receipt_execution_outcome.receipt status_obj = receipt_execution_outcome.execution_outcome.outcome - created_at = datetime.fromtimestamp(block_timestamp / 1000000000) try: function_call = action["FunctionCall"] method_name = function_call["method_name"] args = function_call["args"] decoded_bytes = base64.b64decode(args) if args else b"{}" - signer_id = receipt.receipt["Action"]["signer_id"] - receiver_id = receipt.receiver_id + # signer_id = receipt.receipt["Action"]["signer_id"] + # receiver_id = receiver_id predecessor_id = receipt.predecessor_id + result = status_obj.status.get("SuccessValue") # Assuming the decoded data is UTF-8 text try: decoded_text = decoded_bytes.decode("utf-8") @@ -125,13 +269,25 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess args_dict = {} match method_name: + case "set": # handle near social profile data updates + if receiver_id == settings.NEAR_SOCIAL_CONTRACT_ADDRESS: + logger.info(f"setting profile data: {args_dict}") + await handle_social_profile_update( + args_dict, receiver_id, signer_id + ) case "new": - if match_pot_factory_pattern(receipt.receiver_id): + if match_pot_factory_pattern(receiver_id): logger.info(f"matched for factory pattern: {args_dict}") await handle_new_pot_factory( - args_dict, receiver_id, created_at + args_dict, receiver_id, now_datetime + ) + elif match_nadabot_registry_pattern( + receiver_id + ): # matches registries in the pattern, version(v1).env(staging).nadabot.near + await handle_new_nadabot_registry( + args_dict, receiver_id, now_datetime ) - elif match_pot_subaccount_pattern(receipt.receiver_id): + elif match_pot_subaccount_pattern(receiver_id): logger.info( f"new pot deployment: {args_dict}, {action}" ) @@ -141,7 +297,7 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess signer_id, predecessor_id, receipt.receipt_id, - created_at, + now_datetime, ) break # TODO: update to use handle_apply method?? @@ -155,7 +311,7 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess signer_id, receipt, status_obj, - created_at, + now_datetime, ) break @@ -169,57 +325,69 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess signer_id, receipt, status_obj, - created_at, + now_datetime, ) break - case "donate": # TODO: donate that produces result - logger.info( - f"switching bazooka to knifee works!! donate his blood: {args_dict}, {receipt}, {action}, {log_data}" + ### Donation cases + ## SCENARIOS: + # 1. Pot donations + # tl;dr: only handle method calls that have a result, aka the final call in the chain. This could be "donate", "handle_protocol_fee_callback", or "sybil_callback". + # - handle_protocol_fee_callback (NOT called if protocol fee is bypassed) + # - check result (will ALWAYS return DonationExternal) + # - sybil_callback (NOT called if there are no sybil requirements for the Pot) + # - check result (MAY return DonationExternal) + # - if result is not None, handle donation. + # - donate + # - check result (will either return `DonationExternal`, if no CC calls, or `None` if CC calls were involved) + # - if result is not None, handle donation. Otherwise ignore & listen for either handle_protocol_fee_callback or sybil_callback + # - Example with result: https://nearblocks.io/txns/9beSPiZzR9Yu1951gC6AfQVCXiGPnBRxRFQsyfxUQr3H?tab=execution + # - Example with no result: https://nearblocks.io/txns/7p9m3D2Ao3TX9BXXCKTFbBk51F2iEuSCi8r5gSesdkZ2?tab=execution + # 2. Direct donations + # - donate + # - if result is not None, handle donation. + # - transfer_funds_callback + # - check result (will always return DonationExternal IF it is a DonationTransfer) + # - if result is not None, handle donation + # - NB: this method was not implemented until early 2024; for older donations, use donate method + case ( + "donate" + | "handle_protocol_fee_callback" + | "sybil_callback" + | "transfer_funds_callback" + ): + donation_type = ( + "direct" if receiver_id == DONATE_CONTRACT else "pot" ) - if len(log_data) > 1: - await handle_batch_donations( - receiver_id, signer_id, "direct", receipt, log_data - ) - else: - await handle_new_donations( - args_dict, - receiver_id, - signer_id, - "direct", - receipt, - status_obj, - log_data, - ) - break - - case "handle_protocol_fee_callback": logger.info( - f"donations to pool incoming: {args_dict}, {receipt}, {receipt_execution_outcome}" - ) - await handle_new_donations( - args_dict, - receiver_id, - signer_id, - "pot", - receipt, - status_obj, - log_data, + f"New {donation_type} donation ({method_name}) --- ARGS: {args_dict}, RECEIPT: {receipt}, STATUS: {status_obj}, OUTCOME: {receipt_execution_outcome}, LOGS: {log_data}" ) - break - - case "transfer_funds_callback": - logger.info( - f"new version donations to pool incoming: {args_dict}, {action}" + if not result: + logger.info("No result found. Skipping...") + break + decoded_success_val = base64.b64decode(result).decode( + "utf-8" ) - await handle_new_donations( + logger.info(f"Decoded success value: {decoded_success_val}") + if ( + decoded_success_val == "null" + ): # edge case that sometimes occurs where the response is a literal string "null", appears to be due to transfer_funds_callback returning None e.g. in the case of a ProtocolFeeCallback (see https://pikespeak.ai/transaction-viewer/78M3HCiBCeCu7jEk6KiVSJGr4utnV2aze8S5ZdEu16t8/detailed for example) + logger.info("Result is null. Skipping...") + break + try: + donation_data = json.loads(decoded_success_val) + except json.JSONDecodeError: + logger.error( + f"Error decoding result to JSON: {decoded_success_val}" + ) + donation_data = {} + await handle_new_donation( args_dict, receiver_id, signer_id, - "direct", + donation_type, receipt, - status_obj, - log_data, + donation_data, ) break @@ -229,13 +397,26 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess logger.info( f"registrations incoming: {args_dict}, {action}" ) - if receiver_id != lists_contract: + if receiver_id != LISTS_CONTRACT: break await handle_new_list_registration( args_dict, receiver_id, signer_id, receipt, status_obj ) break + case ( + "unregister" + ): # TODO: listen for create_registration event instead of method call + logger.info( + f"registrations revoke incoming: {args_dict}, {action}" + ) + if receiver_id != LISTS_CONTRACT: + break + await handle_list_registration_removal( + args_dict, receiver_id + ) + break + case "chef_set_application_status": logger.info( f"application status change incoming: {args_dict}" @@ -277,7 +458,7 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess receiver_id, signer_id, receipt.receipt_id, - created_at, + now_datetime, ) break @@ -288,46 +469,91 @@ async def handle_streamer_message(streamer_message: near_primitives.StreamerMess receiver_id, signer_id, receipt.receipt_id, - created_at, + now_datetime, ) break case "transfer_payout_callback": logger.info(f"fulfilling payouts..... {args_dict}") await handle_transfer_payout( - args_dict, receiver_id, receipt.receipt_id, created_at + args_dict, receiver_id, receipt.receipt_id, now_datetime ) break - case ( - "owner_remove_admins" - ): # TODO: use update_admins event instead of method call to handle all cases - logger.info(f"attempting to remove admins....: {args_dict}") - if receiver_id != lists_contract: + case "create_list": + logger.info(f"creating list... {args_dict}, {action}") + if receiver_id != LISTS_CONTRACT: break - await handle_list_admin_removal( - args_dict, receiver_id, signer_id, receipt.receipt_id - ) + await handle_new_list(signer_id, receiver_id, status_obj, None) break - case "create_list": - logger.info(f"creating list... {args_dict}, {action}") - if receiver_id != lists_contract: + case "update_list": + logger.info(f"updating list... {args_dict}, {action}") + if receiver_id != LISTS_CONTRACT: break - await handle_new_list(signer_id, receiver_id, status_obj) + await handle_list_update(signer_id, receiver_id, status_obj, None) break case "upvote": logger.info(f"up voting... {args_dict}") - if receiver_id != lists_contract: + if receiver_id != LISTS_CONTRACT: break await handle_list_upvote( - args_dict, receiver_id, signer_id, receipt.receipt_id + args_dict, receiver_id, signer_id, receipt.receipt_id, now_datetime + ) + break + case "remove_upvote": + logger.info(f"removing upvote... {args_dict}") + if receiver_id != LISTS_CONTRACT: + break + await handle_remove_upvote( + args_dict, receiver_id, signer_id ) break + case "owner_add_admins": + logger.info(f"adding admins.. {args_dict}") + if not match_nadabot_registry_pattern(receiver_id): + break + await handle_add_nadabot_admin(args_dict, receiver_id) + break + case ( + "admin_set_require_whitelist" + | "admin_add_whitelisted_deployers" + | "admin_set_protocol_config" + | "admin_set_protocol_fee_recipient_account" + | "admin_set_protocol_fee_basis_points" + | "owner_set_admins" + | "owner_clear_admins" + | "owner_add_admins" + | "owner_remove_admins" + ): + if not match_pot_factory_pattern(receiver_id): + break + logger.info(f"updating configs.. {args_dict}") + await handle_set_factory_configs(args_dict, receiver_id) + break + case "create_list_with_registrations": + logger.info(f"creating list... {args_dict}, {action}") + if receiver_id != LISTS_CONTRACT: + break + await handle_new_list_and_reg(signer_id, receiver_id, status_obj, receipt) + break # TODO: handle remove upvote except Exception as e: logger.error(f"Error in indexer handler:\n{e}") # with open("indexer_error.txt", "a") as file: # file.write(f"{e}\n") + # logger.info( + # f"Time to process method calls for receipt {receipt_execution_outcome.receipt.receipt_id}: {time.time() - method_call_processing_start:.4f} seconds" + # ) + # log_memory_usage("After processing method calls") + # logger.info( + # f"Time to process shard {shard_index}: {time.time() - shard_start_time:.4f} seconds" + # ) + # log_memory_usage(f"After processing shard {shard_index}") + + # logger.info( + # f"Total time to process streamer message: {time.time() - start_time:.4f} seconds" + # ) + # log_memory_usage("End of handle_streamer_message") diff --git a/indexer_app/logging.py b/indexer_app/logging.py index 973684a..3627087 100644 --- a/indexer_app/logging.py +++ b/indexer_app/logging.py @@ -1,3 +1,13 @@ import logging -logger = logging.getLogger("indexer") \ No newline at end of file +import psutil + +logger = logging.getLogger("indexer") + + +def log_memory_usage(stage): + process = psutil.Process() + memory_info = process.memory_info() + logger.info( + f"{stage} - RSS: {memory_info.rss / 1024 / 1024:.2f} MB, VMS: {memory_info.vms / 1024 / 1024:.2f} MB" + ) diff --git a/indexer_app/management/commands/killspotindexer.py b/indexer_app/management/commands/killspotindexer.py new file mode 100644 index 0000000..d0f5883 --- /dev/null +++ b/indexer_app/management/commands/killspotindexer.py @@ -0,0 +1,33 @@ +from celery.app.control import Inspect +from django.core.management.base import BaseCommand + +from base.celery import SPOT_INDEXER_QUEUE_NAME, app + + +class Command(BaseCommand): + help = "Kill all running Celery tasks in the spot queue for the indexer" + + def handle(self, *args, **options): + i = Inspect(app=app) + active_tasks = i.active() + + if active_tasks is None: + self.stdout.write( + self.style.WARNING( + "No active tasks found or unable to connect to workers." + ) + ) + return + + for worker, tasks in active_tasks.items(): + for task in tasks: + queue = task.get("delivery_info", {}).get("routing_key") + if queue == SPOT_INDEXER_QUEUE_NAME: + app.control.revoke(task_id=task["id"], terminate=True) + self.stdout.write(self.style.SUCCESS(f"Task {task['id']} revoked.")) + + self.stdout.write( + self.style.SUCCESS( + f"All tasks in {SPOT_INDEXER_QUEUE_NAME} queue have been revoked." + ) + ) diff --git a/indexer_app/management/commands/populatedata.py b/indexer_app/management/commands/populatedata.py new file mode 100644 index 0000000..e69422d --- /dev/null +++ b/indexer_app/management/commands/populatedata.py @@ -0,0 +1,547 @@ +import time +from datetime import date, datetime + +import requests +from django.conf import settings +from django.core.management.base import BaseCommand + +from accounts.models import Account +from activities.models import Activity +from donations.models import Donation +from lists.models import List, ListRegistration +from pots.models import ( + Pot, + PotApplication, + PotApplicationReview, + PotPayout, + PotPayoutChallenge, + PotPayoutChallengeAdminResponse, +) +from tokens.models import Token + + +class Command(BaseCommand): + help = "Pull donations data from contract & populate donations table." + + def handle(self, *args, **options): + # lists + LISTS_CONTRACT_ID = "lists.potlock.near" + url = f"https://rpc.web4.near.page/account/{LISTS_CONTRACT_ID}/view/get_lists" + lists = requests.get(url) + if lists.status_code != 200: + print( + f"Request for lists data failed ({lists.status_code}) with message: {lists.text}" + ) + return + lists = lists.json() + print("lists: ", lists) + print(f"adding {len(lists)} direct lists") + for l in lists: + list_id = l["id"] + owner, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=l["owner"]) + list_defaults = { + "on_chain_id": list_id, + "owner": owner, + "name": l["name"], + "description": l["description"], + "cover_image_url": l["cover_image_url"], + "admin_only_registrations": l["admin_only_registrations"], + "default_registration_status": l["default_registration_status"], + "created_at": datetime.fromtimestamp(l["created_at"] / 1000), + "updated_at": datetime.fromtimestamp(l["updated_at"] / 1000), + } + list, created = List.objects.update_or_create( + on_chain_id=list_id, defaults=list_defaults + ) + print("created list: ", list.on_chain_id, created) + # add admins + for admin in l["admins"]: + admin_obj, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=admin) + list.admins.add(admin_obj) + # get registrations in pages + page = 0 + limit = 300 + while True: + time.sleep(1) + url = f"https://rpc.web4.near.page/account/{LISTS_CONTRACT_ID}/view/get_registrations_for_list" + params = { + "list_id.json": list_id, + "from_index.json": page * limit, + "limit.json": limit, + } + registrations = requests.get(url, params=params) + if registrations.status_code != 200: + print( + f"Request for registrations data failed ({registrations.status_code}) with message: {registrations.text}" + ) + return + registrations = registrations.json() + print("registrations: ", registrations) + print(f"adding {len(registrations)} registrations") + for reg in registrations: + registrant, _ = Account.objects.get_or_create(defaults={"chain_id":1}, + id=reg["registrant_id"] + ) + registrar = registrant + if "registered_by" in reg: + registrar, _ = Account.objects.get_or_create(defaults={"chain_id":1}, + id=reg["registered_by"] + ) + registration_defaults = { + "list": list, + "registrant": registrant, + "registered_by": registrar, + "status": reg["status"], + "submitted_at": datetime.fromtimestamp( + reg["submitted_ms"] / 1000 + ), + "updated_at": datetime.fromtimestamp(reg["updated_ms"] / 1000), + "registrant_notes": reg["registrant_notes"], + "admin_notes": reg["admin_notes"], + "tx_hash": None, + } + registration, created = ListRegistration.objects.update_or_create( + registrant=registrant, + list=list, + defaults=registration_defaults, + ) + print("created registration: ", registration.id, created) + if len(registrations) == limit: + page += 1 + else: + break + # TODO: get upvotes (none currently so don't have to worry about it at this point) + # direct donations + # get direct donations in pages + DONATE_CONTRACT_ID = "donate.potlock.near" + page = 0 + limit = 300 + while True: + time.sleep(1) + url = f"https://rpc.web4.near.page/account/{DONATE_CONTRACT_ID}/view/get_donations" + params = {"from_index.json": page * limit, "limit.json": limit} + donations = requests.get(url, params=params) + if donations.status_code != 200: + print( + f"Request for direct donations data failed ({donations.status_code}) with message: {donations.text}" + ) + return + donations = donations.json() + print(f"adding {len(donations)} direct donations") + for donation in donations: + donor, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=donation["donor_id"]) + referrer = None + recipient, _ = Account.objects.get_or_create(defaults={"chain_id":1}, + id=donation["recipient_id"] + ) + ft_id = donation["ft_id"] + ft_acct, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=ft_id) + token_defaults = { + "decimals": 24, + } + if ft_id != "near": + time.sleep(1) + url = f"https://rpc.web4.near.page/account/{ft_id}/view/ft_metadata" + ft_metadata = requests.get(url) + if ft_metadata.status_code != 200: + print( + f"Request for ft_metadata failed ({ft_metadata.status_code}) with message: {ft_metadata.text}" + ) + else: + ft_metadata = ft_metadata.json() + if "name" in ft_metadata: + token_defaults["name"] = ft_metadata["name"] + if "symbol" in ft_metadata: + token_defaults["symbol"] = ft_metadata["symbol"] + if "icon" in ft_metadata: + token_defaults["icon"] = ft_metadata["icon"] + if "decimals" in ft_metadata: + token_defaults["decimals"] = ft_metadata["decimals"] + ft_token, _ = Token.objects.update_or_create( + account=ft_acct, defaults=token_defaults + ) + if donation.get("referrer_id"): + referrer, _ = Account.objects.get_or_create(defaults={"chain_id":1}, + id=donation["referrer_id"] + ) + + total_amount = int(donation["total_amount"]) + protocol_fee = int(donation["protocol_fee"]) + referrer_fee = int(donation["referrer_fee"] or 0) + net_amount = total_amount - protocol_fee - referrer_fee + + donation_defaults = { + "donor": donor, + "total_amount": donation["total_amount"], + "total_amount_usd": None, # USD amounts will be added later + "net_amount_usd": None, + "net_amount": str(net_amount), + "token": ft_token, + "message": donation["message"], + "donated_at": datetime.fromtimestamp( + donation["donated_at_ms"] / 1000 + ), + "matching_pool": False, + "recipient": recipient, + "protocol_fee": donation["protocol_fee"], + "referrer": referrer, + "referrer_fee": donation["referrer_fee"], + "tx_hash": None, + } + donation, created = Donation.objects.update_or_create( + on_chain_id=donation["id"], pot=None, defaults=donation_defaults + ) + print("created donation: ", donation.on_chain_id, created) + # # add donation activity + # activity_type = ( + # "Donate_Pot_Matching_Pool" + # if donation.matching_pool + # else "Donate_Pot_Public" + # ) + # defaults = { + # "signer_id": donor.id, + # "receiver_id": pot_id, + # "timestamp": donation.donated_at, + # "tx_hash": None, + # } + # activity, _ = Activity.objects.update_or_create( + # type=activity_type, + # action_result=None, + # defaults=defaults, + # ) + if len(donations) == limit: + page += 1 + else: + break + # pot factory + POTFACTORY_ID = "v1.potfactory.potlock.near" + # pots + near_acct, _ = Account.objects.get_or_create(defaults={"chain_id":1},id="near") + url = f"{settings.FASTNEAR_RPC_URL}/account/{POTFACTORY_ID}/view/get_pots" + response = requests.get(url) + if response.status_code != 200: + print( + f"Request for donations data failed ({response.status_code}) with message: {response.text}" + ) + return + pots = response.json() + print("pots data; ", pots) + for pot in pots: + # if pot["id"] != "marketing.v1.potfactory.potlock.near": + # continue # TODO: REMOVE THIS + print("sleeping for 1 second") + time.sleep(1) + pot_id = pot["id"] + deployed_by = pot["deployed_by"] + deployed_at_ms = pot["deployed_at_ms"] + print("handling pot: ", pot_id) + # fetch config for pot + url = f"{settings.FASTNEAR_RPC_URL}/account/{pot_id}/view/get_config" + response = requests.get(url) + if response.status_code != 200: + print( + f"Request for pot config failed ({response.status_code}) with message: {response.text}" + ) + return + config = response.json() + print("config data; ", config) + url = f"{settings.FASTNEAR_RPC_URL}/account/{pot_id}/view/get_contract_source_metadata" + response = requests.get(url) + if response.status_code != 200: + print( + f"Request for pot source metadata failed ({response.status_code}) with message: {response.text}" + ) + return + source_metadata = response.json() + print("source metadata; ", source_metadata) + # add or update pot + pot_acct, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=pot_id) + owner, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=config["owner"]) + if config.get("chef"): + chef, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=config["chef"]) + pot_defaults = { + "pot_factory_id": POTFACTORY_ID, + "owner_id": config["owner"], + "chef_id": config["chef"], + "name": config["pot_name"], + "description": config["pot_description"], + "max_approved_applicants": config["max_projects"], + "base_currency": config["base_currency"], + "application_start": datetime.fromtimestamp( + config["application_start_ms"] / 1000 + ), + "application_end": datetime.fromtimestamp( + config["application_end_ms"] / 1000 + ), + "matching_round_start": datetime.fromtimestamp( + config["public_round_start_ms"] / 1000 + ), + "matching_round_end": datetime.fromtimestamp( + config["public_round_end_ms"] / 1000 + ), + "deployer_id": config["deployed_by"], + "deployed_at": datetime.fromtimestamp(deployed_at_ms / 1000), + "source_metadata": source_metadata, + "registry_provider": config["registry_provider"], + "min_matching_pool_donation_amount": config[ + "min_matching_pool_donation_amount" + ], + "sybil_wrapper_provider": config["sybil_wrapper_provider"], + "custom_sybil_checks": config["custom_sybil_checks"], + "custom_min_threshold_score": config["custom_min_threshold_score"], + "referral_fee_matching_pool_basis_points": config[ + "referral_fee_matching_pool_basis_points" + ], + "referral_fee_public_round_basis_points": config[ + "referral_fee_public_round_basis_points" + ], + "chef_fee_basis_points": config["chef_fee_basis_points"], + "total_matching_pool": "0", + "matching_pool_balance": "0", + "matching_pool_donations_count": 0, + "total_public_donations": "0", + "public_donations_count": 0, + "cooldown_period_ms": None, + "cooldown_end": ( + None + if not config["cooldown_end_ms"] + else datetime.fromtimestamp(config["cooldown_end_ms"] / 1000) + ), + "all_paid_out": config["all_paid_out"], + "protocol_config_provider": config["protocol_config_provider"], + } + pot, created = Pot.objects.update_or_create( + account=pot_acct, defaults=pot_defaults + ) + print("pot created? ", created) + print("adding admins") + for admin in config["admins"]: + admin_obj, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=admin) + pot.admins.add(admin_obj) + # add activity + activity_defaults = { + "signer_id": owner.id, + "receiver_id": POTFACTORY_ID, + "timestamp": datetime.fromtimestamp(deployed_at_ms / 1000), + "tx_hash": None, + } + activity, _ = Activity.objects.update_or_create( + type="Deploy_Pot", action_result=None, defaults=activity_defaults + ) + # get applications in pages + page = 0 + limit = 300 + while True: + time.sleep(1) + url = ( + f"https://rpc.web4.near.page/account/{pot_id}/view/get_applications" + ) + params = {"from_index.json": page * limit, "limit.json": limit} + applications = requests.get(url, params=params) + if applications.status_code != 200: + print( + f"Request for applications data failed ({applications.status_code}) with message: {applications.text}" + ) + return + applications = applications.json() + print(f"adding {len(applications)} applications") + for appl in applications: + applicant, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=appl["project_id"]) + application_defaults = { + "applicant": applicant, + "pot": pot, + "message": appl["message"], + "status": appl["status"], + "submitted_at": datetime.fromtimestamp( + appl["submitted_at"] / 1000 + ), + "updated_at": ( + None + if not appl["updated_at"] + else datetime.fromtimestamp(appl["updated_at"] / 1000) + ), + } + application, _ = PotApplication.objects.update_or_create( + pot=pot, applicant=applicant, defaults=application_defaults + ) + # if status != Pending, add PotApplicationReview also, default to pot owner + if application.status != "Pending": + review_defaults = { + "application": application, + "reviewer": owner, + "notes": appl["review_notes"], + "status": application.status, + "reviewed_at": application.updated_at, + "tx_hash": None, + } + review, _ = PotApplicationReview.objects.update_or_create( + application=application, + reviewer=owner, + defaults=review_defaults, + ) + if len(applications) == limit: + page += 1 + else: + break + # get pot donations in pages + page = 0 + limit = 300 + while True: + time.sleep(1) + url = f"https://rpc.web4.near.page/account/{pot_id}/view/get_donations" + params = {"from_index.json": page * limit, "limit.json": limit} + donations = requests.get(url, params=params) + if donations.status_code != 200: + print( + f"Request for donations data failed ({donations.status_code}) with message: {donations.text}" + ) + return + donations = donations.json() + print(f"adding {len(donations)} donations") + for donation in donations: + donor, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=donation["donor_id"]) + project = None + referrer = None + chef = None + if donation.get("project_id"): + project, _ = Account.objects.get_or_create(defaults={"chain_id":1}, + id=donation["project_id"] + ) + if donation.get("referrer_id"): + referrer, _ = Account.objects.get_or_create(defaults={"chain_id":1}, + id=donation["referrer_id"] + ) + if donation.get("chef_id"): + chef, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=donation["chef_id"]) + + # net_amount is 0 for some donations, so calculate it + net_amount = donation["net_amount"] + if net_amount == "0": + total_amount = int(donation["total_amount"]) + protocol_fee = int(donation["protocol_fee"]) + referrer_fee = int(donation["referrer_fee"] or 0) + chef_fee = int(donation["chef_fee"] or 0) + net_amount = ( + total_amount - protocol_fee - referrer_fee - chef_fee + ) + + # pot donations always NEAR + ft_acct, _ = Account.objects.get_or_create(defaults={"chain_id":1},id="near") + ft_token, _ = Token.objects.get_or_create(account=ft_acct) + donation_defaults = { + "donor": donor, + "total_amount": donation["total_amount"], + "total_amount_usd": None, # USD amounts will be added later + "net_amount_usd": None, + "net_amount": net_amount, + "token": ft_token, + "message": donation["message"], + "donated_at": datetime.fromtimestamp( + donation["donated_at"] / 1000 + ), + "matching_pool": donation["matching_pool"], + "recipient": project, + "protocol_fee": donation["protocol_fee"], + "referrer": referrer, + "referrer_fee": donation["referrer_fee"], + "chef": chef, + "chef_fee": donation["chef_fee"], + "tx_hash": None, + } + donation, _ = Donation.objects.update_or_create( + on_chain_id=donation["id"], pot=pot, defaults=donation_defaults + ) + print("added donation: ", donation.on_chain_id) + # # add donation activity + # activity_type = ( + # "Donate_Pot_Matching_Pool" + # if donation.matching_pool + # else "Donate_Pot_Public" + # ) + # defaults = { + # "signer_id": donor.id, + # "receiver_id": pot_id, + # "timestamp": donation.donated_at, + # "tx_hash": None, + # } + # activity, _ = Activity.objects.update_or_create( + # type=activity_type, + # action_result=None, + # defaults=defaults, + # ) + if len(donations) == limit: + page += 1 + else: + break + if "payouts" in config: + for payout in config["payouts"]: + paid_at = ( + None + if "paid_at" not in payout + else datetime.fromtimestamp(payout["paid_at"] / 1000) + ) + recipient, _ = Account.objects.get_or_create(defaults={"chain_id":1}, + id=payout["project_id"] + ) + near_token, _ = Token.objects.get_or_create(account=near_acct) + payout_defaults = { + "pot": pot, + "recipient": recipient, + "amount": payout["amount"], + "amount_paid_usd": None, + "token": near_token, # pots only support native NEAR + "paid_at": paid_at, + "tx_hash": None, + } + payout, _ = PotPayout.objects.update_or_create( + pot=pot, recipient=recipient, defaults=payout_defaults + ) + # get pot challenges & admin responses + page = 0 + limit = 300 + while True: + time.sleep(1) + url = f"https://rpc.web4.near.page/account/{pot_id}/view/get_payouts_challenges" + params = {"from_index.json": page * limit, "limit.json": limit} + challenges = requests.get(url, params=params) + if challenges.status_code != 200: + print( + f"Request for challenges data failed ({challenges.status_code}) with message: {challenges.text}" + ) + return + challenges = challenges.json() + print(f"adding {len(challenges)} challenges") + for c in challenges: + challenger, _ = Account.objects.get_or_create(defaults={"chain_id":1},id=c["challenger_id"]) + challenge_defaults = { + "challenger": challenger, + "pot": pot, + "message": c["reason"], + "created_at": datetime.fromtimestamp(c["created_at"] / 1000), + } + challenge, _ = PotPayoutChallenge.objects.update_or_create( + pot=pot, challenger=challenger, defaults=challenge_defaults + ) + # if status != Pending, add PotApplicationReview also, default to pot owner + if c["admin_notes"] or c["resolved"]: + response_defaults = { + "challenger": challenger, + "pot": pot, + "admin": owner, # don't actually know who did it, just using owner for this backfilling + "created_at": datetime.fromtimestamp( + c["created_at"] / 1000 + ), # not exactly correct but we don't know currently + "message": c["admin_notes"], + "resolved": c["resolved"], + } + review, _ = ( + PotPayoutChallengeAdminResponse.objects.update_or_create( + challenger=challenger, + pot=pot, + defaults=response_defaults, + ) + ) + if len(challenges) == limit: + page += 1 + else: + break diff --git a/indexer_app/management/commands/runspotindexer.py b/indexer_app/management/commands/runspotindexer.py new file mode 100644 index 0000000..a78fb26 --- /dev/null +++ b/indexer_app/management/commands/runspotindexer.py @@ -0,0 +1,27 @@ +from django.core.management.base import BaseCommand + +from indexer_app.tasks import spot_index_near_events + + +class Command(BaseCommand): + help = "Invoke the Near Data Lake indexer task" + + def add_arguments(self, parser): + parser.add_argument( + "start_block", + type=int, + help="The starting block number for the Near Data Lake indexer task", + ) + + def handle(self, *args, **options): + start_block = options["start_block"] + # Invoke Celery task + try: + spot_index_near_events.delay(start_block=start_block) + self.stdout.write( + self.style.SUCCESS( + "Successfully invoked the Near Data Lake indexer task" + ) + ) + except Exception as e: + self.stdout.write(self.style.ERROR(f"Failed to invoke task: {str(e)}")) diff --git a/indexer_app/migrations/0003_alter_blockheight_block_timestamp.py b/indexer_app/migrations/0003_alter_blockheight_block_timestamp.py new file mode 100644 index 0000000..d48b410 --- /dev/null +++ b/indexer_app/migrations/0003_alter_blockheight_block_timestamp.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.6 on 2024-07-25 17:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("indexer_app", "0002_blockheight_block_timestamp"), + ] + + operations = [ + migrations.AlterField( + model_name="blockheight", + name="block_timestamp", + field=models.DateTimeField( + blank=True, + help_text="date equivalent of the block height.", + null=True, + verbose_name="block timestamp", + ), + ), + ] diff --git a/indexer_app/models.py b/indexer_app/models.py index ace12ec..db4f2ed 100644 --- a/indexer_app/models.py +++ b/indexer_app/models.py @@ -16,8 +16,9 @@ class BlockHeight(models.Model): _("block timestamp"), help_text=_("date equivalent of the block height."), null=True, + blank=True, ) updated_at = models.DateTimeField( _("updated at"), help_text=_("block height last update at."), - ) \ No newline at end of file + ) diff --git a/indexer_app/tasks.py b/indexer_app/tasks.py index 4d3f179..44c4ecb 100644 --- a/indexer_app/tasks.py +++ b/indexer_app/tasks.py @@ -1,22 +1,33 @@ import asyncio +from datetime import datetime +import json import logging +import time from pathlib import Path +import requests from billiard.exceptions import WorkerLostError from celery import shared_task from celery.signals import task_revoked, worker_shutdown from django.conf import settings -from django.db import transaction -from django.db.models import Count, Q, Sum -from near_lake_framework import LakeConfig, streamer +from django.db.models import Count, DecimalField, Q, Sum, Value +from django.db.models.functions import Cast, NullIf +from near_lake_framework import LakeConfig, streamer, Network +import stellar_sdk +from stellar_sdk.soroban_server import EventFilter, EventFilterType +from stellar_sdk import Address, stellar_xdr, scval from accounts.models import Account +from base.celery import SPOT_INDEXER_QUEUE_NAME from donations.models import Donation +from grantpicks.models import Round, RoundDeposit, StellarEvent, ProjectContact from indexer_app.handler import handle_streamer_message -from pots.models import PotPayout +from pots.models import Pot, PotApplication, PotApplicationStatus, PotPayout from .logging import logger -from .utils import cache_block_height, get_block_height +from .utils import create_or_update_round, create_round_application, create_round_payout, get_block_height, get_ledger_sequence, process_application_to_round, process_project_event, process_rounds_deposit_event, process_vote_event, save_block_height, update_application, update_approved_projects, update_ledger_sequence, update_round_payout + +CURRENT_BLOCK_HEIGHT_KEY = "current_block_height" async def indexer(from_block: int, to_block: int): @@ -25,35 +36,56 @@ async def indexer(from_block: int, to_block: int): """ # Initialize lake indexer logger.info(f"from block: {from_block}") - lake_config = ( - LakeConfig.testnet() + + lake_config = LakeConfig( + Network.TESTNET if settings.ENVIRONMENT == "testnet" - else LakeConfig.mainnet() - ) - lake_config.start_block_height = ( + else Network.MAINNET, + settings.AWS_ACCESS_KEY_ID, + settings.AWS_SECRET_ACCESS_KEY, from_block - if from_block - else logger.info( - "Starting to index from latest block" - ) # TODO: wtf is this shitty code ) - lake_config.aws_access_key_id = settings.AWS_ACCESS_KEY_ID - lake_config.aws_secret_key = settings.AWS_SECRET_ACCESS_KEY _, streamer_messages_queue = streamer(lake_config) - block_count = 0 while True: try: + # Log time before fetching a new block + fetch_start_time = time.time() # streamer_message is the current block streamer_message = await streamer_messages_queue.get() - block_count += 1 - await cache_block_height( - "current_block_height", - streamer_message.block.header.height, - block_count, - streamer_message.block.header.timestamp, - ) # current block height + fetch_end_time = time.time() + logger.info( + f"Time to fetch new block: {fetch_end_time - fetch_start_time:.4f} seconds" + ) + # Log time before caching block height + save_start_time = time.time() + # Update current block height + asyncio.create_task( + save_block_height( + streamer_message.block.header.height, + streamer_message.block.header.timestamp, + ) + ) + save_end_time = time.time() + + logger.info( + f"Time to save block height: {save_end_time - save_start_time:.4f} seconds" + ) + + # Log time before handling the streamer message + handle_start_time = time.time() await handle_streamer_message(streamer_message) + handle_end_time = time.time() + logger.info( + f"Time to handle streamer message: {handle_end_time - handle_start_time:.4f} seconds" + ) + + # Log total time for one iteration + iteration_end_time = time.time() + logger.info( + f"Total time for one iteration: {iteration_end_time - fetch_start_time:.4f} seconds" + ) + except Exception as e: logger.error(f"Error in streamer_messages_queue: {e}") @@ -66,8 +98,8 @@ def listen_to_near_events(): try: # Update below with desired network & block height - start_block = get_block_height("current_block_height") - # start_block = 112959664 + start_block = get_block_height() + # start_block = 112682360 logger.info(f"what's the start block, pray tell? {start_block-1}") loop.run_until_complete(indexer(start_block - 1, None)) except WorkerLostError: @@ -76,6 +108,21 @@ def listen_to_near_events(): loop.close() +@shared_task(queue=SPOT_INDEXER_QUEUE_NAME) +def spot_index_near_events(start_block): + logger.info("Spot indexing NEAR events...") + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + + try: + logger.info(f"Spot index start block: {start_block-1}") + loop.run_until_complete(indexer(start_block - 1, None)) + except WorkerLostError: + pass # don't log to Sentry + finally: + loop.close() + + # @worker_shutdown.connect # def worker_shutdown_handler(sig, how, exitcode, **kwargs): # if sig == 15: @@ -120,6 +167,107 @@ def fetch_usd_prices(): ) jobs_logger.info(f"USD prices fetched for {donations_count} donations.") + # payouts + payouts = PotPayout.objects.filter( + amount_paid_usd__isnull=True, paid_at__isnull=False + ) + payouts_count = payouts.count() + jobs_logger.info(f"Fetching USD prices for {payouts_count} payouts...") + for payout in payouts: + try: + payout.fetch_usd_prices() + except Exception as e: + jobs_logger.error(f"Failed to fetch USD prices for payout {payout.id}: {e}") + + jobs_logger.info(f"USD prices fetched for {payouts_count} payouts.") + + +@shared_task +def update_pot_statistics(): + pots = Pot.objects.all() + pots_count = pots.count() + jobs_logger.info(f"Updating statistics for {pots_count} pots...") + for pot in pots: + matching_pool_donations = Donation.objects.filter(pot=pot, matching_pool=True) + public_donations = Donation.objects.filter(pot=pot, matching_pool=False) + try: + print(f"Processing pot: {pot.account}") + + # total matching pool + pot.total_matching_pool = sum( + int(donation.total_amount) + for donation in matching_pool_donations + if donation.total_amount.isdigit() + ) + jobs_logger.info(f"Total matching pool: {pot.total_matching_pool}") + + # total matching pool usd + pot.total_matching_pool_usd = sum( + donation.total_amount_usd + for donation in matching_pool_donations + if donation.total_amount_usd + ) + jobs_logger.info(f"Total matching pool USD: {pot.total_matching_pool_usd}") + + # matching pool balance (get from contract) + url = ( + f"{settings.FASTNEAR_RPC_URL}/account/{pot.account.id}/view/get_config" + ) + response = requests.get(url) + if response.status_code != 200: + jobs_logger.error( + f"Failed to get matching pool balance for pot {pot.account}: {response.text}" + ) + else: + data = response.json() + pot.matching_pool_balance = data["matching_pool_balance"] + jobs_logger.info( + f"Matching pool balance for pot {pot.account}: {pot.matching_pool_balance}" + ) + + # matching pool donations count + pot.matching_pool_donations_count = matching_pool_donations.count() + jobs_logger.info( + f"Matching pool donations count: {pot.matching_pool_donations_count}" + ) + + # total public donations + pot.total_public_donations = sum( + int(donation.total_amount) + for donation in public_donations + if donation.total_amount.isdigit() + ) + jobs_logger.info(f"Total public donations: {pot.total_public_donations}") + + # total public donations usd + pot.total_public_donations_usd = sum( + donation.total_amount_usd + for donation in public_donations + if donation.total_amount_usd + ) + jobs_logger.info( + f"Total public donations USD: {pot.total_public_donations_usd}" + ) + + # public donations count + pot.public_donations_count = public_donations.count() + jobs_logger.info(f"Public donations count: {pot.public_donations_count}") + + # Save changes + pot.save( + update_fields=[ + "total_matching_pool", + "total_matching_pool_usd", + "matching_pool_balance", + "matching_pool_donations_count", + "total_public_donations", + "total_public_donations_usd", + "public_donations_count", + ] + ) + except Exception as e: + jobs_logger.error(f"Failed to update statistics for pot {pot.account}: {e}") + @shared_task def update_account_statistics(): @@ -175,6 +323,124 @@ def update_account_statistics(): ) jobs_logger.info(f"Account stats for {accounts.count()} accounts updated.") +def address_to_string(obj): + if isinstance(obj, Address): + return obj.address + raise TypeError(f"Object of type {obj.__class__.__name__} is not JSON serializable") + +@shared_task +def stellar_event_indexer(): + server = stellar_sdk.SorobanServer( + "https://soroban-testnet.stellar.org" + if settings.ENVIRONMENT == "testnet" or settings.ENVIRONMENT == "local" + else "https://horizon.stellar.org" + ) + contract_ids = [settings.STELLAR_CONTRACT_ID, settings.STELLAR_PROJECTS_REGISTRY_CONTRACT] + if contract_ids == ['', '']: + return + start_sequence = get_ledger_sequence() + # start_sequence = 12169 + if not start_sequence: + start_sequence = 774951 + jobs_logger.info(f"Ingesting Stellar events from ledger {start_sequence}... contracts: {contract_ids}") + try: + # Fetch events for the current sequence + events = server.get_events( + start_ledger=start_sequence, + filters=[ + EventFilter( + event_type=EventFilterType.CONTRACT, + contract_ids=contract_ids + ) + ] + ) + stellar_events = [] + ledger_timestamp = datetime.now() + for event in events.events: + event_name = stellar_sdk.scval.to_native(event.topic[0]) + event_value = event.value + if event.value is not None: + event_value = stellar_sdk.scval.to_native(event.value) + event_value = json.loads(json.dumps(event_value, default=address_to_string)) + print("event value:. ", event_value) + stellar_events.append(StellarEvent( + ledger_sequence=event.ledger, + event_type=event_name, + contract_id=event.contract_id, + ingested_at=event.ledger_close_at, + transaction_hash=event.transaction_hash, + data=event_value + )) + + if len(stellar_events) > 0: + StellarEvent.objects.bulk_create( + objs=stellar_events, + ignore_conflicts=True + ) + ledger_timestamp = event.ledger_close_at + jobs_logger.info(f"Ingested {len(stellar_events)} Stellar events from ledger {start_sequence} to {events.latest_ledger}...") + update_ledger_sequence(events.latest_ledger, ledger_timestamp) + + except Exception as e: + jobs_logger.error(f"Error processing ledger {start_sequence}: {e}") + + + +@shared_task +def process_stellar_events(): + unprocessed_events = StellarEvent.objects.filter(processed=False).order_by('id') + jobs_logger.info(f"Processing {unprocessed_events.count()} unprocessed Stellar events...") + + for event in unprocessed_events: + try: + event_data = event.data + event_name = event.event_type + + if event_name == 'c_project': + event.processed = process_project_event(event_data) + + elif event_name == 'c_round' or event_name == 'u_round': + + # Mark event as processed + event.processed = create_or_update_round(event_data, event.contract_id, event.ingested_at) + + elif event_name == 'apply_to_round': + + # Mark event as processed + event.processed = process_application_to_round(event_data, event.transaction_hash) + + elif event_name == 'c_app': + + event.processed = create_round_application(event_data, event.transaction_hash) + + + elif event_name == 'u_app': # application review and aproval + event.processed = update_application(event_data, event.transaction_hash) + + elif event_name == 'u_ap': + event.processed = update_approved_projects(event_data) + + elif event_name == 'c_depo': + + event.processed = process_rounds_deposit_event(event_data, event.transaction_hash) + + elif event_name == 'c_vote': + + event.processed = process_vote_event(event_data, event.transaction_hash) + elif event_name == "c_pay": + event.processed = create_round_payout(event_data, event.transaction_hash) + elif event_name == "u_pay": + + event.processed = update_round_payout(event_data, event.transaction_hash) + event.save() + + except Exception as e: + jobs_logger.error(f"Error processing Stellar event { event_name, event.id}: {e}") + + jobs_logger.info(f"Finished processing Stellar events.") + + + @task_revoked.connect def on_task_revoked(request, terminated, signum, expired, **kwargs): diff --git a/indexer_app/utils.py b/indexer_app/utils.py index 5f394a3..287c013 100644 --- a/indexer_app/utils.py +++ b/indexer_app/utils.py @@ -1,38 +1,128 @@ import base64 -import decimal import json from datetime import datetime +from math import log +from typing import Dict import requests +from asgiref.sync import sync_to_async from django.conf import settings from django.core.cache import cache +from django.db import transaction from django.utils import timezone from near_lake_framework.near_primitives import ExecutionOutcome, Receipt +import stellar_sdk from accounts.models import Account from activities.models import Activity +from chains.models import Chain from donations.models import Donation +from grantpicks.models import Project, ProjectContact, ProjectContract, ProjectFundingHistory, ProjectRepository, ProjectStatus, Round, RoundDeposit, Vote, VotePair from indexer_app.models import BlockHeight from lists.models import List, ListRegistration, ListUpvote +from nadabot.models import BlackList, Group, NadabotRegistry, Provider, Stamp from pots.models import ( Pot, PotApplication, PotApplicationReview, + PotApplicationStatus, PotFactory, PotPayout, PotPayoutChallenge, PotPayoutChallengeAdminResponse, ) +from tokens.models import Token from .logging import logger # GECKO_URL = "https://api.coingecko.com/api/v3" # TODO: move to settings +async def handle_social_profile_update(args_dict, receiver_id, signer_id): + logger.info(f"handling social profile update for {signer_id}") + if ( + "data" in args_dict + and signer_id in args_dict["data"] + and "profile" in args_dict["data"][signer_id] + ): + try: + # only proceed if this account already exists in db + account = await Account.objects.filter(id=signer_id).afirst() + logger.info(f"account: {account}") + if account: + logger.info(f"updating social profile for {signer_id}") + await account.fetch_near_social_profile_data_async() + # account.fetch_near_social_profile_data() + except Exception as e: + logger.error(f"Error in handle_social_profile_update: {e}") + + +async def handle_new_nadabot_registry( + data: dict, receiverId: str, created_at: datetime +): + logger.info(f"nadabot registry init... {data}") + + try: + registry, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=receiverId) + owner, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=data["owner"]) + nadabot_registry, created = await NadabotRegistry.objects.aupdate_or_create( + account=registry, + owner=owner, + created_at=created_at, + updated_at=created_at, + source_metadata=data.get("source_metadata"), + ) + + if data.get("admins"): + for admin_id in data["admins"]: + admin, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=admin_id) + await nadabot_registry.admins.aadd(admin) + except Exception as e: + logger.error(f"Error in registry initiialization: {e}") + + +async def handle_registry_blacklist_action( + data: dict, receiverId: str, created_at: datetime +): + logger.info(f"Registry blacklist action....... {data}") + + try: + registry, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=receiverId) + bulk_obj = [] + for acct in data["accounts"]: + account, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=acct) + bulk_obj.append( + { + "registry": registry, + "account": account, + "reason": data.get("reason"), + "date_blacklisted": created_at, + } + ) + await BlackList.objects.abulk_create( + objs=[BlackList(**data) for data in bulk_obj], ignore_conflicts=True + ) + except Exception as e: + logger.error(f"Error in adding acct to blacklist: {e}") + + +async def handle_registry_unblacklist_action( + data: dict, receiverId: str, created_at: datetime +): + logger.info(f"Registry remove blacklisted accts....... {data}") + + try: + registry, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=receiverId) + entries = BlackList.objects.filter(account__in=data["accounts"]) + await entries.adelete() + except Exception as e: + logger.error(f"Error in removing acct from blacklist: {e}") + + async def handle_new_pot( data: dict, - receiverId: str, - signerId: str, + receiver_id: str, + signer_id: str, predecessorId: str, receiptId: str, created_at: datetime, @@ -42,22 +132,33 @@ async def handle_new_pot( logger.info("new pot deployment process... upsert accounts,") # Upsert accounts - owner, _ = await Account.objects.aget_or_create(id=data["owner"]) - signer, _ = await Account.objects.aget_or_create(id=signerId) - receiver, _ = await Account.objects.aget_or_create(id=receiverId) + owner_id = ( + data.get("owner") or signer_id + ) # owner is optional; if not provided, owner will be transaction signer (this logic is implemented by Pot contract's "new" method) + owner, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=owner_id) + signer, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=signer_id) + receiver, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=receiver_id) + + # check if pot exists + pot = await Pot.objects.filter(account=receiver).afirst() + if pot: + logger.info("Pot already exists, update using api call") + pot_config_update = sync_to_async(pot.update_configs) + await pot_config_update() + return logger.info("upsert chef") if data.get("chef"): - chef, _ = await Account.objects.aget_or_create(id=data["chef"]) + chef, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=data["chef"]) # Create Pot object - logger.info("create pot....") + logger.info(f"creating pot with owner {owner_id}....") pot_defaults = { "pot_factory_id": predecessorId, "deployer": signer, "deployed_at": created_at, "source_metadata": data["source_metadata"], - "owner_id": data["owner"], + "owner_id": owner_id, "chef_id": data.get("chef"), "name": data["pot_name"], "description": data["pot_description"], @@ -76,10 +177,8 @@ async def handle_new_pot( data["public_round_end_ms"] / 1000 ), "registry_provider": data["registry_provider"], - "min_matching_pool_donation_amount": data[ - "min_matching_pool_donation_amount" - ], - "sybil_wrapper_provider": data["sybil_wrapper_provider"], + "min_matching_pool_donation_amount": data.get("min_matching_pool_donation_amount") or "0", + "sybil_wrapper_provider": data.get("sybil_wrapper_provider"), "custom_sybil_checks": data.get("custom_sybil_checks"), "custom_min_threshold_score": data.get("custom_min_threshold_score"), "referral_fee_matching_pool_basis_points": data[ @@ -94,23 +193,21 @@ async def handle_new_pot( "matching_pool_donations_count": 0, "total_public_donations": "0", "public_donations_count": 0, - "cooldown_period_ms": None, + "cooldown_period_ms": data.get("cooldown_end_ms"), "all_paid_out": False, "protocol_config_provider": data["protocol_config_provider"], } - pot, created = await Pot.objects.aupdate_or_create( - id=receiver, defaults=pot_defaults - ) + pot = await Pot.objects.acreate(account=receiver, **pot_defaults) # Add admins to the Pot if data.get("admins"): for admin_id in data["admins"]: - admin, _ = await Account.objects.aget_or_create(id=admin_id) - pot.admins.aadd(admin) + admin, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=admin_id) + await pot.admins.aadd(admin) defaults = { - "signer_id": signerId, - "receiver_id": receiverId, + "signer_id": signer_id, + "receiver_id": receiver_id, "timestamp": created_at, "tx_hash": receiptId, } @@ -122,21 +219,87 @@ async def handle_new_pot( logger.error(f"Failed to handle new pot, Error: {e}") -async def handle_new_pot_factory(data: dict, receiverId: str, created_at: datetime): +async def handle_pot_config_update( + log_data: dict, + receiver_id: str, +): + try: + pot = await Pot.objects.filter(account=receiver_id).afirst() + if pot: + logger.info("Pot already exists, updating using api call") + pot_config_update = sync_to_async(pot.update_configs) + await pot_config_update() + # pot_config = { + # "deployer": data["deployed_by"], + # "source_metadata": data["source_metadata"], + # "owner_id": data["owner"], + # "chef_id": data.get("chef"), + # "name": data["pot_name"], + # "description": data["pot_description"], + # "max_approved_applicants": data["max_projects"], + # "base_currency": data["base_currency"], + # "application_start": datetime.fromtimestamp( + # data["application_start_ms"] / 1000 + # ), + # "application_end": datetime.fromtimestamp( + # data["application_end_ms"] / 1000 + # ), + # "matching_round_start": datetime.fromtimestamp( + # data["public_round_start_ms"] / 1000 + # ), + # "matching_round_end": datetime.fromtimestamp( + # data["public_round_end_ms"] / 1000 + # ), + # "registry_provider": data["registry_provider"], + # "min_matching_pool_donation_amount": data[ + # "min_matching_pool_donation_amount" + # ], + # "sybil_wrapper_provider": data["sybil_wrapper_provider"], + # "custom_sybil_checks": data.get("custom_sybil_checks"), + # "custom_min_threshold_score": data.get("custom_min_threshold_score"), + # "referral_fee_matching_pool_basis_points": data[ + # "referral_fee_matching_pool_basis_points" + # ], + # "referral_fee_public_round_basis_points": data[ + # "referral_fee_public_round_basis_points" + # ], + # "chef_fee_basis_points": data["chef_fee_basis_points"], + # "matching_pool_balance": data["matching_pool_balance"], + # "total_public_donations": data["total_public_donations"], + # "public_donations_count": data["public_donations_count"], + # "cooldown_period_ms": data["cooldown_end_ms"], + # "all_paid_out": data["all_paid_out"], + # "protocol_config_provider": data["protocol_config_provider"], + # } + + # pot, created = await Pot.objects.aupdate_or_create( + # account=receiver_id, defaults=pot_config + # ) + + # if data.get("admins"): + # for admin_id in data["admins"]: + # admin, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=admin_id) + # pot.admins.aadd(admin) + # await Pot.objects.filter(id=receiver_id).aupdate(**pot_config) + except Exception as e: + logger.error(f"Failed to update Pot config, Error: {e}") + + +async def handle_new_pot_factory(data: dict, receiver_id: str, created_at: datetime): try: logger.info("upserting accounts...") # Upsert accounts - owner, _ = await Account.objects.aget_or_create( + owner, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, id=data["owner"], ) - protocol_fee_recipient_account, _ = await Account.objects.aget_or_create( + protocol_fee_recipient_account, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, id=data["protocol_fee_recipient_account"], ) - receiver, _ = await Account.objects.aget_or_create( - id=receiverId, + receiver, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, + id=receiver_id, ) logger.info("creating factory....") @@ -150,13 +313,13 @@ async def handle_new_pot_factory(data: dict, receiverId: str, created_at: dateti } # Create Factory object factory, factory_created = await PotFactory.objects.aupdate_or_create( - id=receiver, defaults=defaults + account=receiver, defaults=defaults ) # Add admins to the PotFactory if data.get("admins"): for admin_id in data["admins"]: - admin, _ = await Account.objects.aget_or_create( + admin, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, id=admin_id, ) await factory.admins.aadd(admin) @@ -164,24 +327,49 @@ async def handle_new_pot_factory(data: dict, receiverId: str, created_at: dateti # Add whitelisted deployers to the PotFactory if data.get("whitelisted_deployers"): for deployer_id in data["whitelisted_deployers"]: - deployer, _ = await Account.objects.aget_or_create(id=deployer_id) + deployer, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=deployer_id) await factory.whitelisted_deployers.aadd(deployer) except Exception as e: logger.error(f"Failed to handle new pot Factory, Error: {e}") -async def handle_new_list(signerId: str, receiverId: str, status_obj: ExecutionOutcome): +async def handle_new_list_and_reg(signer_id: str, receiver_id: str, status_obj: ExecutionOutcome, receipt: Receipt): + create_data, reg_data = json.loads( + base64.b64decode(status_obj.status.get("SuccessValue")).decode( + "utf-8" + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT + ) + await handle_new_list(signer_id, receiver_id, None, create_data) + if reg_data: + await handle_new_list_registration(reg_data, receiver_id, signer_id, receipt, None) + pass + + +async def handle_new_list( + signer_id: str, receiver_id: str, status_obj: ExecutionOutcome | None, data: dict | None +): # receipt = block.receipts().filter(receiptId=receiptId)[0] try: - data = json.loads( - base64.b64decode(status_obj.status.get("SuccessValue")).decode("utf-8") - ) + if not data: + data = json.loads( + base64.b64decode(status_obj.status.get("SuccessValue")).decode( + "utf-8" + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT + ) + + logger.info("upserting involveed accts...") + + await Account.objects.aget_or_create(defaults={"chain_id":1},id=data["owner"]) + + await Account.objects.aget_or_create(defaults={"chain_id":1},id=signer_id) + + await Account.objects.aget_or_create(defaults={"chain_id":1},id=receiver_id) logger.info(f"creating list..... {data}") listObject = await List.objects.acreate( - id=data["id"], + on_chain_id=data["id"], owner_id=data["owner"], default_registration_status=data["default_registration_status"], name=data["name"], @@ -192,17 +380,9 @@ async def handle_new_list(signerId: str, receiverId: str, status_obj: ExecutionO updated_at=datetime.fromtimestamp(data["updated_at"] / 1000), ) - logger.info("upserting involveed accts...") - - await Account.objects.aget_or_create(id=data["owner"]) - - await Account.objects.aget_or_create(id=signerId) - - await Account.objects.aget_or_create(id=receiverId) - if data.get("admins"): for admin_id in data["admins"]: - admin_object, _ = await Account.objects.aget_or_create( + admin_object, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, id=admin_id, ) await listObject.admins.aadd(admin_object) @@ -210,32 +390,85 @@ async def handle_new_list(signerId: str, receiverId: str, status_obj: ExecutionO logger.error(f"Failed to handle new list, Error: {e}") + +async def handle_list_update( + signer_id: str, receiver_id: str, status_obj: ExecutionOutcome | None, data: dict | None +): + try: + + if not data: + data = json.loads( + base64.b64decode(status_obj.status.get("SuccessValue")).decode( + "utf-8" + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT + ) + + + logger.info(f"updating list from result..... {data}") + + listObject = await List.objects.filter(on_chain_id=data["id"]).aupdate( + owner_id=data["owner"], + default_registration_status=data["default_registration_status"], + name=data["name"], + description=data["description"], + cover_image_url=data["cover_image_url"], + admin_only_registrations=data["admin_only_registrations"], + created_at=datetime.fromtimestamp(data["created_at"] / 1000), + updated_at=datetime.fromtimestamp(data["updated_at"] / 1000), + ) + + # if data.get("admins"): + # for admin_id in data["admins"]: + # admin_object, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, + # id=admin_id, + # ) + # await listObject.admins.aadd(admin_object) + except Exception as e: + logger.error(f"Failed to handle list update, Error: {e}") + + +async def handle_delete_list( + data: dict +): + try: + logger.info(f"deleting list..... {data}") + lst = await List.objects.filter(on_chain_id=data["list_id"]).adelete() + except Exception as e: + logger.error(f"Failed to delete, Error: {e}") + async def handle_new_list_registration( data: dict, - receiverId: str, - signerId: str, + receiver_id: str, + signer_id: str, receipt: Receipt, - status_obj: ExecutionOutcome, + status_obj: ExecutionOutcome | None, ): - logger.info(f"new Project data: {data}, {receiverId}") + logger.info(f"new Project data: {data}, {receiver_id}") # Retrieve receipt data if receipt is None: return - reg_data = json.loads( - base64.b64decode(status_obj.status["SuccessValue"]).decode("utf-8") - ) + if status_obj: + reg_data = json.loads( + base64.b64decode(status_obj.status["SuccessValue"]).decode( + "utf-8" + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT + ) + else: + reg_data = data # Prepare data for insertion project_list = [] insert_data = [] + parent_list = await List.objects.aget(on_chain_id=reg_data[0]["list_id"]) for dt in reg_data: - project_list.append({"id": dt["registrant_id"]}) + logger.info(f"dt: {dt}") + project_list.append({"chain_id":1, "id": dt["registrant_id"]}) insert_data.append( { "id": dt["id"], "registrant_id": dt["registrant_id"], - "list_id": dt["list_id"], + "list_id": parent_list.id, "status": dt["status"], "submitted_at": datetime.fromtimestamp(dt["submitted_ms"] / 1000), "updated_at": datetime.fromtimestamp(dt["updated_ms"] / 1000), @@ -245,12 +478,13 @@ async def handle_new_list_registration( "tx_hash": receipt.receipt_id, } ) + logger.info(f"insert_data: {insert_data}") try: await Account.objects.abulk_create( objs=[Account(**data) for data in project_list], ignore_conflicts=True ) - await Account.objects.aget_or_create(id=signerId) + await Account.objects.aget_or_create(defaults={"chain_id":1},id=signer_id) logger.info("Upserted accounts/registrants(signer)") except Exception as e: logger.error(f"Encountered error trying to get create acct: {e}") @@ -265,9 +499,9 @@ async def handle_new_list_registration( # Insert activity try: defaults = { - "signer_id": signerId, - "receiver_id": receiverId, - "timestamp": datetime.fromtimestamp(insert_data[0]["submitted_at"] / 1000), + "signer_id": signer_id, + "receiver_id": receiver_id, + "timestamp": insert_data[0]["submitted_at"], "tx_hash": receipt.receipt_id, } @@ -278,13 +512,28 @@ async def handle_new_list_registration( logger.error(f"Encountered error trying to insert activity: {e}") +async def handle_list_registration_removal( + data: dict, + receiver_id: str, +): + logger.info(f"list reg removal: {data}, {receiver_id}") + + try: + list_obj = await List.objects.aget(on_chain_id=data["list_id"]) + await list_obj.registrations.filter(id=data["registration_id"]).adelete() + + except Exception as e: + logger.error(f"Encountered error trying to remove reg: {e}") + async def handle_list_registration_update( - data: dict, receiverId: str, status_obj: ExecutionOutcome + data: dict, receiver_id: str, status_obj: ExecutionOutcome ): - logger.info(f"new Project data: {data}, {receiverId}") + logger.info(f"new Project data: {data}, {receiver_id}") data = json.loads( - base64.b64decode(status_obj.status.get("SuccessValue")).decode("utf-8") + base64.b64decode(status_obj.status.get("SuccessValue")).decode( + "utf-8" + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT ) # Prepare data for update @@ -303,8 +552,8 @@ async def handle_list_registration_update( async def handle_pot_application( data: dict, - receiverId: str, - signerId: str, + receiver_id: str, + signer_id: str, receipt: Receipt, status_obj: ExecutionOutcome, created_at: datetime, @@ -316,16 +565,19 @@ async def handle_pot_application( if not result: return - appl_data = json.loads(base64.b64decode(result).decode("utf-8")) + appl_data = json.loads( + base64.b64decode(result).decode("utf-8") + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT logger.info(f"new pot application data: {data}, {appl_data}") # Update or create the account - project, _ = await Account.objects.aget_or_create( - id=data["project_id"], + project, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, + id=appl_data["project_id"], ) - signer, _ = await Account.objects.aget_or_create( - id=signerId, + # TODO: wouldn't this be the same as the project_id? should inspect + signer, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, + id=signer_id, ) # Create the PotApplication object @@ -340,7 +592,7 @@ async def handle_pot_application( application, application_created = ( await PotApplication.objects.aupdate_or_create( applicant=project, - pot_id=receiverId, + pot_id=receiver_id, defaults=appl_defaults, ) ) @@ -349,8 +601,8 @@ async def handle_pot_application( logger.info("creating activity for action....") defaults = { - "signer_id": signerId, - "receiver_id": receiverId, + "signer_id": signer_id, + "receiver_id": receiver_id, "timestamp": created_at, "tx_hash": receipt.receipt_id, } @@ -368,24 +620,24 @@ async def handle_pot_application( async def handle_pot_application_status_change( data: dict, - receiverId: str, - signerId: str, + receiver_id: str, + signer_id: str, receipt: Receipt, status_obj: ExecutionOutcome, ): try: - logger.info(f"pot application update data: {data}, {receiverId}") + logger.info(f"pot application update data: {data}, {receiver_id}") # receipt = next(receipt for receipt in block.receipts() if receipt.receiptId == receiptId) update_data = json.loads( - base64.b64decode(status_obj.status["SuccessValue"]).decode("utf-8") + base64.b64decode(status_obj.status["SuccessValue"]).decode( + "utf-8" + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT ) # Retrieve the PotApplication object - appl = await PotApplication.objects.filter( - applicant_id=data["project_id"] - ).afirst() + appl = await PotApplication.objects.select_related('round', 'pot', 'project', 'applicant').filter(applicant_id=data["project_id"], pot_id=receiver_id).afirst() if not appl: logger.error( @@ -404,14 +656,14 @@ async def handle_pot_application_status_change( } await PotApplicationReview.objects.aupdate_or_create( - application_id=appl.id, - reviewer_id=signerId, + application=appl, + reviewer_id=signer_id, reviewed_at=updated_at, defaults=defaults, ) # Update the PotApplication object - await PotApplication.objects.filter(applicant_id=data["project_id"]).aupdate( + await PotApplication.objects.select_related('round', 'pot', 'project', 'applicant').filter(applicant_id=data["project_id"], pot_id=receiver_id).aupdate( **{"status": update_data["status"], "updated_at": updated_at} ) @@ -421,14 +673,16 @@ async def handle_pot_application_status_change( async def handle_default_list_status_change( - data: dict, receiverId: str, status_obj: ExecutionOutcome + data: dict, receiver_id: str, status_obj: ExecutionOutcome ): try: - logger.info(f"update project data: {data}, {receiverId}") + logger.info(f"update project data: {data}, {receiver_id}") result_data = json.loads( - base64.b64decode(status_obj.status.get("SuccessValue")).decode("utf-8") + base64.b64decode(status_obj.status.get("SuccessValue")).decode( + "utf-8" + ) # TODO: RECEIVE AS A FUNCTION ARGUMENT ) list_id = data.get("registration_id") @@ -452,26 +706,32 @@ async def handle_default_list_status_change( async def handle_list_upvote( - data: dict, receiverId: str, signerId: str, receiptId: str + data: dict, receiver_id: str, signer_id: str, receiptId: str, created_at: datetime ): try: - logger.info(f"upvote list: {data}, {receiverId}") + logger.info(f"upvote list: {data}, {receiver_id}") - acct, _ = await Account.objects.aget_or_create( - id=signerId, + acct, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, + id=signer_id, ) - created_at = datetime.now() + + up_default = { + "created_at": created_at + } + + list_obj = await List.objects.aget(on_chain_id=data.get("list_id")) await ListUpvote.objects.aupdate_or_create( - list_id=data.get("list_id") or receiverId, - account_id=signerId, + list=list_obj, + account_id=signer_id, + defaults=up_default ) defaults = { - "signer_id": signerId, - "receiver_id": receiverId, + "signer_id": signer_id, + "receiver_id": receiver_id, "timestamp": created_at, "tx_hash": receiptId, } @@ -487,91 +747,134 @@ async def handle_list_upvote( logger.error(f"Failed to upvote list, Error: {e}") -async def handle_set_payouts(data: dict, receiverId: str, receipt: Receipt): + +async def handle_remove_upvote( + data: dict, receiver_id: str, signer_id: str +): + try: + + logger.info(f"remove upvote from list: {data}, {receiver_id}") + list_obj = await List.objects.aget(on_chain_id=data.get("list_id")) + await ListUpvote.objects.filter(list=list_obj, account_id=signer_id).adelete() + + logger.info( + f"Upvote removed successfully" + ) + except Exception as e: + logger.error(f"Failed to remove upvote from list, Error: {e}") + + +async def handle_set_payouts(data: dict, receiver_id: str, receipt: Receipt): try: - logger.info(f"set payout data: {data}, {receiverId}") + logger.info(f"set payout data: {data}, {receiver_id}") payouts = data.get("payouts", []) + pot = await Pot.objects.aget(account=receiver_id) + near_acct, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id="near") + near_token, _ = await Token.objects.aget_or_create( + account=near_acct + ) # Pots only support native NEAR insertion_data = [] for payout in payouts: # General question: should we register projects as accounts? - potPayout = { - "recipient_id": payout.get("project_id"), - "amount": payout.get("amount"), - "ft_id": payout.get("ft_id", "near"), - "tx_hash": receipt.receipt_id, - } - insertion_data.append(potPayout) + pot_payout = PotPayout( + pot=pot, + recipient_id=payout.get("project_id"), + amount=payout.get("amount"), + token=near_token, + paid_at=None, + tx_hash=receipt.receipt_id, + ) + insertion_data.append(pot_payout) await PotPayout.objects.abulk_create(insertion_data, ignore_conflicts=True) + url = f"{settings.FASTNEAR_RPC_URL}/account/{receiver_id}/view/get_config" + response = requests.get(url) + if response.status_code != 200: + logger.error(f"Failed to get config for pot {receiver_id}: {response.text}") + else: + data = response.json() + pot = await Pot.objects.aget(account=receiver_id) + pot.cooldown_end = datetime.fromtimestamp(data["cooldown_end_ms"] / 1000) + await pot.asave() except Exception as e: logger.error(f"Failed to set payouts, Error: {e}") async def handle_transfer_payout( - data: dict, receiverId: str, receiptId: str, created_at: datetime + data: dict, receiver_id: str, receiptId: str, created_at: datetime ): try: data = data["payout"] - logger.info(f"fulfill payout data: {data}, {receiverId}") + logger.info(f"fulfill payout data: {data}, {receiver_id}, {created_at}") payout = { "recipient_id": data["project_id"], "amount": data["amount"], - "paid_at": data.get("paid_at", created_at), + "paid_at": data["paid_at"] or created_at, "tx_hash": receiptId, } await PotPayout.objects.filter(recipient_id=data["project_id"]).aupdate( **payout ) + # check if all_paid_out is now true + url = f"{settings.FASTNEAR_RPC_URL}/account/{receiver_id}/view/get_config" + response = requests.get(url) + if response.status_code != 200: + logger.error(f"Failed to get config for pot {receiver_id}: {response.text}") + else: + data = response.json() + pot = await Pot.objects.aget(account=receiver_id) + pot.all_paid_out = data["all_paid_out"] + await pot.asave() except Exception as e: logger.error(f"Failed to create payout data, Error: {e}") async def handle_payout_challenge( - data: dict, receiverId: str, signerId: str, receiptId: str, created_at: datetime + data: dict, receiver_id: str, signer_id: str, receiptId: str, created_at: datetime ): try: - - logger.info(f"challenging payout..: {data}, {receiverId}") + acct, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=signer_id) + logger.info(f"challenging payout..: {data}, {receiver_id}") payoutChallenge = { "created_at": created_at, "message": data["reason"], "tx_hash": receiptId, } await PotPayoutChallenge.objects.aupdate_or_create( - challenger_id=signerId, pot_id=receiverId, defaults=payoutChallenge + challenger_id=signer_id, pot_id=receiver_id, defaults=payoutChallenge ) defaults = { - "signer_id": signerId, - "receiver_id": receiverId, + "signer_id": signer_id, + "receiver_id": receiver_id, "timestamp": created_at, "tx_hash": receiptId, } activity, activity_created = await Activity.objects.aupdate_or_create( - action_result=payoutChallenge, type="Challenge_Payout", defaults=defaults + action_result=data, type="Challenge_Payout", defaults=defaults ) except Exception as e: logger.error(f"Failed to create payoutchallenge, Error: {e}") async def handle_payout_challenge_response( - data: dict, receiverId: str, signerId: str, receiptId: str, created_at: datetime + data: dict, receiver_id: str, signer_id: str, receiptId: str, created_at: datetime ): try: - logger.info(f"responding to payout challenge..: {data}, {receiverId}") + logger.info(f"responding to payout challenge..: {data}, {receiver_id}") response_defaults = { - "admin": signerId, + "admin_id": signer_id, "message": data.get("notes"), "resolved": data.get("resolve_challenge"), "tx_hash": receiptId, } await PotPayoutChallengeAdminResponse.objects.aupdate_or_create( challenger_id=data["challenger_id"], - pot_id=receiverId, + pot_id=receiver_id, created_at=created_at, defaults=response_defaults, ) @@ -579,216 +882,232 @@ async def handle_payout_challenge_response( logger.error(f"Failed to handle admin challeneg response, Error: {e}") -async def handle_list_admin_removal(data, receiverId, signerId, receiptId): +async def handle_list_admin_ops(data, receiver_id, signer_id, receiptId): try: - logger.info(f"removing admin...: {data}, {receiverId}") - list_obj = await List.objects.aget(id=data["list_id"]) + logger.info(f"updating admin...: {data}, {receiver_id}") + list_obj = await List.objects.aget(on_chain_id=data["list_id"]) for acct in data["admins"]: - list_obj.admins.remove({"admins_id": acct}) # maybe check + admin, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=acct) + contains = await list_obj.admins.acontains(admin) + if not contains: + await list_obj.admins.aadd(admin) + async for admin in list_obj.admins.all(): + if not admin.id in data["admins"]: + await list_obj.admins.aremove(admin) activity = { - "signer_id": signerId, - "receiver_id": receiverId, + "signer_id": signer_id, + "receiver_id": receiver_id, "timestamp": datetime.now(), "tx_hash": receiptId, } activity, activity_created = await Activity.objects.aupdate_or_create( - type="Remove_List_Admin", defaults=activity + type="List_Admin_Ops", defaults=activity ) except Exception as e: logger.error(f"Failed to remove list admin, Error: {e}") -# TODO: Need to abstract some actions. -async def handle_batch_donations( - receiverId: str, - signerId: str, - actionName: str, - receipt_obj: Receipt, - log_data: list, -): - logger.info("BAtch Transaction for donation...") - for event_data in log_data: - await handle_new_donations( - event_data["donation"], - receiverId, - signerId, - actionName, - receipt_obj, - status_obj=None, - log_data=[event_data], - ) +async def handle_list_owner_change(data): + try: + logger.info(f"changing owner... ...: {data}") + await List.objects.filter(id=data["list_id"]).aupdate(**{ + "owner": data["new_owner_id"] + }) + except Exception as e: + logger.error(f"Failed to change list owner, Error: {e}") -async def handle_new_donations( - data: dict, - receiverId: str, - signerId: str, - actionName: str, - receipt_obj: Receipt, - status_obj: ExecutionOutcome, - log_data: list, -): - logger.info(f"new donation data: {data}, {receiverId}") - donate_contract_addr = "donate." + settings.POTLOCK_TLA +async def handle_add_nadabot_admin(data, receiverId): + logger.info(f"adding admin...: {data}, {receiverId}") + try: + obj = await NadabotRegistry.objects.aget(account=receiverId) - if ( - actionName == "direct" - ) and receiverId == donate_contract_addr: # early pot donations followed similarly to direct donations i.e they returned result instead of events. - logger.info("calling donate contract...") - # Handle direct donation + for acct in data["account_ids"]: + user, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=acct) + await obj.admins.aadd(user) + except Exception as e: + logger.error(f"Failed to add nadabot admin, Error: {e}") - if not log_data: - return - logger.info(f"event after possible filtering: {log_data}") +async def handle_add_factory_deployers(data, receiverId): + logger.info(f"adding factory deployer...: {data}, {receiverId}") + try: + factory = await PotFactory.objects.aget(account=receiverId) + for acct in data["whitelisted_deployers"]: + user, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=acct) + await factory.whitelisted_deployers.aadd(user) + except Exception as e: + logger.error(f"Failed to add factory whitelisted deployers, Error: {e}") + - event_data = log_data[0] - donation_data = event_data["donation"] - net_amount = int(donation_data["total_amount"]) - int( - donation_data["protocol_fee"] - ) - logger.info(f"Donation data: {donation_data}, {net_amount}") - # insert donate contract which is the receiver id(because of activitry relationship mainly) - donate_contract, _ = await Account.objects.aget_or_create(id=receiverId) +async def handle_set_factory_configs(data, receiverId): + logger.info(f"setting factory configs...: {data}, {receiverId}") + try: + factory = await PotFactory.objects.aget(account=receiverId) + config_update = sync_to_async(factory.update_configs) + await config_update() + except Exception as e: + logger.error(f"Failed to update factory configs, Error: {e}") - else: - result = status_obj.status.get("SuccessValue") - if not result: - return - # Handle non-direct donation - donation_data = json.loads(base64.b64decode(result).decode("utf-8")) + + + +# # TODO: Need to abstract some actions. +# async def handle_batch_donations( +# receiver_id: str, +# signer_id: str, +# action_name: str, +# receipt_obj: Receipt, +# log_data: list, +# ): +# logger.info("Batch Transaction for donation...") +# for event_data in log_data: +# await handle_new_donations( +# event_data["donation"], +# receiver_id, +# signer_id, +# action_name, +# receipt_obj, +# status_obj=None, +# log_data=[event_data], +# ) + +# TODO: create handle_new_pot_donation & handle_new_direct_donation functions & share common logic with _handle_new_donation function + + +async def handle_new_donation( + data: dict, + receiver_id: str, + signer_id: str, + donation_type: str, # "direct" or "pot" + receipt_obj: Receipt, + donation_data: dict, # Donation object (note that these vary between direct and pot donations - see examples of each in ./examples.txt) +): + logger.info(f"handle_new_donation args data: {data}, {receiver_id}") + logger.info(f"donation data: {donation_data}") + + if "net_amount" in donation_data and donation_data["net_amount"] != "0": net_amount = int(donation_data["net_amount"]) + else: + # direct donations don't have net_amount property, so have to calculate it here + total_amount = int(donation_data["total_amount"]) + protocol_fee = int(donation_data["protocol_fee"]) + referrer_fee = int(donation_data["referrer_fee"] or 0) + chef_fee = int(donation_data.get("chef_fee") or 0) + + net_amount = total_amount - protocol_fee - referrer_fee - chef_fee donated_at = datetime.fromtimestamp( (donation_data.get("donated_at") or donation_data.get("donated_at_ms")) / 1000 ) try: - + # insert donate contract which is the receiver id(because of activity relationship mainly) + donate_contract, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=receiver_id) # Upsert donor account - donor, _ = await Account.objects.aget_or_create(id=donation_data["donor_id"]) + donor, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=donation_data["donor_id"]) recipient = None + referrer = None + chef = None - if donation_data.get("recipient_id"): - recipient, _ = await Account.objects.aget_or_create( + if donation_data.get("recipient_id"): # direct donations have recipient_id + recipient, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, id=donation_data["recipient_id"] ) - if donation_data.get("project_id"): - recipient, _ = await Account.objects.aget_or_create( + if donation_data.get("project_id"): # pot donations have project_id + recipient, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, id=donation_data["project_id"] ) if donation_data.get("referrer_id"): - referrer, _ = await Account.objects.aget_or_create( + referrer, _ = await Account.objects.aget_or_create(defaults={"chain_id":1}, id=donation_data["referrer_id"] ) + if donation_data.get("chef_id"): + chef, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=donation_data["chef_id"]) + # Upsert token account - token_acct, _ = await Account.objects.aget_or_create( - id=(donation_data.get("ft_id") or "near") + ft_id = donation_data.get("ft_id") or "near" + token_acct, token_acct_created = await Account.objects.aget_or_create(defaults={"chain_id":1},id=ft_id) + token_defaults = { + "decimals": 24, + } + if token_acct_created: + logger.info(f"Created new token account: {token_acct}") + if ft_id != "near": + url = f"{settings.FASTNEAR_RPC_URL}/account/{ft_id}/view/ft_metadata" + ft_metadata = requests.get(url) + if ft_metadata.status_code != 200: + logger.error( + f"Request for ft_metadata failed ({ft_metadata.status_code}) with message: {ft_metadata.text}" + ) + else: + ft_metadata = ft_metadata.json() + if "name" in ft_metadata: + token_defaults["name"] = ft_metadata["name"] + if "symbol" in ft_metadata: + token_defaults["symbol"] = ft_metadata["symbol"] + if "icon" in ft_metadata: + token_defaults["icon"] = ft_metadata["icon"] + if "decimals" in ft_metadata: + token_defaults["decimals"] = ft_metadata["decimals"] + token, _ = await Token.objects.aupdate_or_create( + account=token_acct, defaults=token_defaults ) + except Exception as e: logger.error(f"Failed to create/get an account involved in donation: {e}") - # # Upsert token - # try: - # token = await Token.objects.aget(id=token_acct) - # except Token.DoesNotExist: - # # TODO: fetch metadata from token contract (ft_metadata) and add decimals to token record. For now adding 12 which is most common - # token = await Token.objects.acreate(id=token_acct, decimals=12) - - # # Fetch historical token data - # # late_p = await token.get_most_recent_price() - # try: - # logger.info("fetching historical price...") - # logger.info(f"donated at: {donated_at}") - # endpoint = f"{GECKO_URL}/coins/{donation_data.get('ft_id', 'near')}/history?date={format_date(donated_at)}&localization=false" - # logger.info(f"endpoint: {endpoint}") - # response = requests.get(endpoint) - # logger.info(f"response: {response}") - # if response.status_code == 429: - # logger.error("Coingecko rate limit exceeded") - # price_data = response.json() - # except Exception as e: - # logger.error(f"Failed to fetch price data: {e}") - # logger.info(f"price data: {price_data}") - # unit_price = price_data.get("market_data", {}).get("current_price", {}).get("usd") - # logger.info(f"unit price: {unit_price}") - # if unit_price: - # try: - # await TokenHistoricalPrice.objects.acreate( # need to change token model to use token as id - # token=token, - # price_usd=unit_price, - # timestamp=donated_at, - # ) - # except Exception as e: - # logger.error( - # f"Error creating TokenHistoricalPrice: {e} token: {token} unit_price: {unit_price}" - # ) - # # historical_price = await token.get_most_recent_price() # to use model methods, we might have to use asgiref sync_to_async - # historical = await TokenHistoricalPrice.objects.aget(token=token) - # unit_price = historical.price_usd - - # total_amount = donation_data["total_amount"] - # net_amount = net_amount - int(donation_data.get("referrer_fee") or 0) - - # # Calculate and format amounts - # total_near_amount = format_to_near(total_amount) - # net_near_amount = format_to_near(net_amount) - # total_amount_usd = None if not unit_price else unit_price * total_near_amount - # net_amount_usd = None if not unit_price else unit_price * net_near_amount - try: total_amount = donation_data["total_amount"] - logger.info(f"inserting donations... by {actionName}") + logger.info(f"inserting {donation_type} donation") default_data = { "donor": donor, + "pot": None, "total_amount": total_amount, - "total_amount_usd": None, # USD amounts will be added later (could be in pre-save hook) + "total_amount_usd": None, # USD amounts will be added later "net_amount_usd": None, "net_amount": net_amount, - "ft": token_acct, + "token": token, "message": donation_data.get("message"), "donated_at": donated_at, "matching_pool": donation_data.get("matching_pool", False), "recipient": recipient, "protocol_fee": donation_data["protocol_fee"], - "referrer": referrer if donation_data.get("referrer_id") else None, + "referrer": referrer, "referrer_fee": donation_data.get("referrer_fee"), + "chef": chef, + "chef_fee": donation_data.get("chef_fee"), "tx_hash": receipt_obj.receipt_id, } - logger.info(f"default donation data: {default_data}") - if actionName != "direct": - logger.info("selecting pot to make public donation update") - pot = await Pot.objects.aget(id=receiverId) - default_data["pot"] = pot + if donation_type == "pot": + default_data["pot"] = await Pot.objects.aget(account=receiver_id) + + logger.info(f"default donation data: {default_data}") donation, donation_created = await Donation.objects.aupdate_or_create( - on_chain_id=donation_data["id"], defaults={}, create_defaults=default_data + on_chain_id=donation_data["id"], + pot=default_data["pot"], + defaults=default_data, ) logger.info(f"Created donation? {donation_created}") + logger.info(f"donation: {donation.to_dict()}") # fetch USD prices await donation.fetch_usd_prices_async() # might not need to await this? - # # convert total_amount_usd and net_amount_usd from None - # if total_amount_usd is None: - # total_amount_usd = 0.0 - # if net_amount_usd is None: - # net_amount_usd = 0.0 - - logger.info(f"Created donation? {donation_created}") # Insert or update activity record activity_type = ( "Donate_Direct" - if actionName == "direct" + if donation_type == "direct" else ( "Donate_Pot_Matching_Pool" if donation.matching_pool @@ -796,13 +1115,12 @@ async def handle_new_donations( ) ) defaults = { - "signer_id": signerId, - "receiver_id": receiverId, + "signer_id": signer_id, + "receiver_id": receiver_id, "timestamp": donation.donated_at, "tx_hash": receipt_obj.receipt_id, } try: - activity, activity_created = await Activity.objects.aupdate_or_create( action_result=donation_data, type=activity_type, defaults=defaults ) @@ -819,7 +1137,7 @@ async def handle_new_donations( ### CAN ALWAYS ADD BACK IF DESIRED # if donation_created: # only do stats updates if donation object was created - # if actionName != "direct": + # if action_name != "direct": # potUpdate = { # "total_public_donations": str( @@ -853,7 +1171,7 @@ async def handle_new_donations( # pot.public_donations_count or 0 # ) + 1 - # await Pot.objects.filter(id=receiverId).aupdate(**potUpdate) + # await Pot.objects.filter(id=receiver_id).aupdate(**potUpdate) # # donation_recipient = donation_data.get('project_id', donation_data['recipient_id']) # logger.info( @@ -876,27 +1194,667 @@ async def handle_new_donations( # await Account.objects.filter(id=recipient.id).aupdate(**acctUpdate) -async def cache_block_height( - key: str, height: int, block_count: int, block_timestamp: int -) -> int: - await cache.aset(key, height) - # the cache os the default go to for the restart block, the db is a backup if the redis server crashes. - if (block_count % int(settings.BLOCK_SAVE_HEIGHT or 400)) == 0: - logger.info(f"saving daylight, {height}") - await BlockHeight.objects.aupdate_or_create( - id=1, +async def handle_update_default_human_threshold(data: dict, receiverId: str): + logger.info(f"update threshold data... {data}") + + try: + + reg = await NadabotRegistry.objects.filter(account=receiverId).aupdate( + **{"default_human_threshold": data["default_human_threshold"]} + ) + logger.info("updated threshold..") + except Exception as e: + logger.error(f"Failed to update default threshold, Error: {e}") + + +async def handle_new_provider(data: dict, receiverId: str, signerId: str): + logger.info(f"new provider data: {data}, {receiverId}") + data = data["provider"] + + logger.info( + f"upserting accounts involved, {data['submitted_by']}, {data['contract_id']}" + ) + + try: + submitter, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=data["submitted_by"]) + contract, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=data["contract_id"]) + + provider_id = data["id"] + + # due to an event malfunction from the contract, the first 13 migrated(migrated from a previous contract) providers, + # had the same id emitted for them, the id `13`, so we have to catch it and manoeuvre aroubd it. + # TODO: REMOVE when next version contract is deployed, as this issue would be fixed. + if provider_id == 13: + provider_id = await cache.aget("last_id", 1) + await cache.aset("last_id", provider_id + 1) + + provider = await Provider.objects.aupdate_or_create( + on_chain_id=provider_id, + contract=contract, + method_name=data["method_name"], + name=data["provider_name"], + description=data.get("description"), + status=data["status"], + admin_notes=data.get("admin_notes"), + default_weight=data["default_weight"], + gas=data.get("gas"), + tags=data.get("tags"), + icon_url=data.get("icon_url"), + external_url=data.get("external_url"), + submitted_by_id=data["submitted_by"], + submitted_at=datetime.fromtimestamp(data.get("submitted_at_ms") / 1000), + stamp_validity_ms=( + datetime.fromtimestamp(data.get("stamp_validity_ms") / 1000) + if data.get("stamp_validity_ms") + else None + ), + account_id_arg_name=data["account_id_arg_name"], + custom_args=data.get("custom_args"), + registry_id=receiverId, + ) + except Exception as e: + logger.error(f"Failed to add new stamp provider: {e}") + + +async def handle_add_stamp(data: dict, receiverId: str, signerId: str): + logger.info(f"new stamp data: {data}, {receiverId}") + data = data["stamp"] + + logger.info(f"upserting accounts involved, {data['user_id']}") + + user, _ = await Account.objects.aget_or_create(defaults={"chain_id":1},id=data["user_id"]) + provider, _ = await Provider.objects.aget_or_create(on_chain_id=data["provider_id"]) + + try: + stamp = await Stamp.objects.aupdate_or_create( + user=user, + provider=provider, + verified_at=datetime.fromtimestamp(data["validated_at_ms"] / 1000), + ) + except Exception as e: + logger.error(f"Failed to create stamp: {e}") + + +async def handle_new_group(data: dict, created_at: datetime): + logger.info(f"new group data: {data}") + group_data = data.get("group", {}) + try: + # group enums can have values, they are represented as a dict in the events from the indexer, and enum choices without values are presented as normal strings: + # withValue: {'group': {'id': 5, 'name': 'Here we go again', 'providers': [8, 1, 4, 6], 'rule': {'IncreasingReturns': 10}}} + # noValue: {"id":6,"name":"Lachlan test group","providers":[1,2],"rule":"Highest"} + rule = group_data["rule"] + rule_key = rule + rule_val = None + if type(rule) == dict: + rule_key = next(iter(rule)) + rule_val = rule.get(rule_key) + + group = await Group.objects.acreate( + id=group_data["id"], + name=group_data["name"], + created_at=created_at, + updated_at=created_at, + rule_type=rule_key, + rule_val=rule_val, + ) + + logger.info(f"addding provider.... : {group_data['providers']}") + if group_data.get("providers"): + for provider_id in group_data["providers"]: + provider, _ = await Provider.objects.aget_or_create( + on_chain_id=provider_id + ) + await group.providers.aadd(provider) + except Exception as e: + logger.error(f"Failed to create group, because: {e}") + + +async def save_block_height(block_height: int, block_timestamp: int): + await BlockHeight.objects.aupdate_or_create( + id=1, + defaults={ + "block_height": block_height, + "block_timestamp": datetime.fromtimestamp(block_timestamp / 1000000000), + "updated_at": timezone.now(), + }, + ) # better than ovverriding model's save method to get a singleton? we need only one entry + # return height + + +def get_block_height() -> int: + record = BlockHeight.objects.filter(id=1).first() + if record: + return record.block_height + return 178243042 + + + +def update_ledger_sequence(sequence, timestamp: datetime): + BlockHeight.objects.update_or_create( + id=2, + defaults={ + "block_height": sequence, + "block_timestamp": timestamp, + "updated_at": timezone.now(), + }, + ) + +def get_ledger_sequence() -> int: + record = BlockHeight.objects.filter(id=2).first() + if record: + return record.block_height + + +def update_approved_projects(event_data, chain_id="stellar"): + round_id, project_ids = event_data[0], event_data[1] + + with transaction.atomic(): + try: + chain = Chain.objects.get(name=chain_id) + round_obj = Round.objects.get(on_chain_id=round_id, chain=chain) + for ids in project_ids: + project = Project.objects.get(on_chain_id=ids) + round_obj.approved_projects.add(project.owner) + return True + + except Exception as e: + logger.error(f"Error updating application for Round {round_id}: {e}") + return False + +def update_application(event_data, txhash, reviewer_id=None, chain_id="stellar"): + if type(event_data) == list: + round_id, application_data, reviewer_id = event_data[0], event_data[1], event_data[2] + else: + event_data = event_data['application'] + round_id, application_data, reviewer_id = event_data["round_id"], event_data, reviewer_id + + with transaction.atomic(): + try: + chain = Chain.objects.get(name=chain_id) + round_obj = Round.objects.get(on_chain_id=round_id, chain=chain) + applicant = Account.objects.get(id=application_data['applicant_id'], chain=chain) + + reviewer = Account.objects.get(id=reviewer_id, chain=chain) + + if chain_id == "NEAR": + status = PotApplicationStatus[application_data['status'].upper()] + else: + status = PotApplicationStatus[application_data['status'][0].upper()] + + submitted_at = datetime.fromtimestamp(application_data['submited_ms'] / 1000) + updated_at = datetime.fromtimestamp(application_data['updated_ms'] / 1000) + + defaults = { + "notes": application_data.get("review_note"), + "status": status, + "tx_hash": txhash, + } + + appl = PotApplication.objects.filter( + applicant=applicant + ).first() + + PotApplicationReview.objects.update_or_create( + application_id=appl.id, + reviewer=reviewer, + reviewed_at=updated_at, + defaults=defaults, + ) + + # Update the PotApplication object + PotApplication.objects.filter(applicant=applicant, round=round_obj).update( + **{"status": status, "updated_at": updated_at} + ) + + return True + + except Exception as e: + logger.error(f"Error updating application for Round {round_id}: {e}") + return False + + +def get_pair_projects(pair_id: int, round_id: int, chain_id: str) -> Dict: + if chain_id == "stellar": + server = stellar_sdk.SorobanServer( + "https://soroban-testnet.stellar.org" + if settings.ENVIRONMENT == "testnet" or settings.ENVIRONMENT == "local" + else "https://horizon.stellar.org" + ) + + contract_id = settings.STELLAR_CONTRACT_ID + function_name = "get_pair_by_index" + parameters = [stellar_sdk.scval.to_uint128(round_id), stellar_sdk.scval.to_uint32(pair_id)] + public_key = "GAMFYFI7TIAPMLSAWIECFZCN52TR3NUIO74YM7ECBCPM6J743KENH367" # TODO: move to settings + acct = server.load_account(public_key) + + pair_result = server.simulate_transaction( + transaction_envelope=stellar_sdk.TransactionBuilder( + source_account=acct, + ).append_invoke_contract_function_op( + contract_id, + function_name, + parameters + ) + .set_timeout(30) + .build() + ) + + + if pair_result.results: + xdr = pair_result.results[0].xdr + data = stellar_sdk.scval.to_native(xdr) + return data + else: + url = f"https://rpc.web4.testnet.page/account/{settings.NEAR_GRANTPICKS_CONTRACT_ID}/view/get_pair_by_id?round_id.json={round_id}&pair_id.json={pair_id}" + response = requests.get(url) + if response.status_code == 200: + data = response.json() + return data + else: + logger.error(f"Failed to fetch pair data from NEAR: {response}") + return None + + +def process_vote_event(event_data, tx_hash, chain_id="stellar"): + try: + logger.info(f"process_vote_event: {event_data}, {tx_hash}, {chain_id}") + with transaction.atomic(): + if type(event_data) == list: + round_id, vote_data = event_data[0], event_data[1] + else: + # vote_event_data = event_data['vote'] + round_id, vote_data = event_data.get("round_id"), event_data['vote'] + + chain = Chain.objects.get(name=chain_id) + round_obj = Round.objects.get(on_chain_id=round_id, chain=chain) + voter, _ = Account.objects.get_or_create(id=vote_data['voter'], chain=chain) + voted_at = datetime.fromtimestamp(vote_data['voted_ms'] / 1000) + + # Create or update the Vote + vote, created = Vote.objects.update_or_create( + round=round_obj, + voter=voter, + defaults={ + 'tx_hash': tx_hash, + 'voted_at': voted_at + } + ) + + + + # Process vote pairs + for pick in vote_data['picks']: + if chain_id == "NEAR": + pair_id = pick['pair_id'] + project_id = pick['voted_project'] + + + else: + pair_id = pick['pair_id'] + project_id = Project.objects.get(on_chain_id=pick['project_id']).owner.id + + pair_data = get_pair_projects(pair_id, round_id, chain_id) + logger.info(f"pair data from contract...:,{pair_data}") + if pair_data: + project_id_1, project_id_2 = pair_data.get('projects') + if chain_id == "stellar": + project_1 = Project.objects.get(on_chain_id=project_id_1).owner.id + project_2 = Project.objects.get(on_chain_id=project_id_2).owner.id + else: + project_1 = project_id_1 + project_2 = project_id_2 + + + vp, created = VotePair.objects.update_or_create( + vote=vote, + pair_id=pair_id, + defaults={'voted_project_id': project_id} + ) + vp.projects.add(project_1) + vp.projects.add(project_2) + + logger.info(f"Processed vote for Round: {round_id}, Voter: {voter.id}, Project: {project_id}") + return True + except Exception as e: + logger.error(f"Error processing vote for Round: {str(e)}") + return False + + +def process_project_event(event_data, chain_id="stellar"): + try: + # Extract project data + project_data = event_data + + logger.info(f"process_project_event: {project_data}, {chain_id}") + + chain = Chain.objects.get(name=chain_id) + + # Create or get the owner Account + owner, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=project_data['owner']) + + # Create or get the payout Account + payout_address, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=project_data['payout_address']) + + # Create the Project + project, created = Project.objects.update_or_create( + on_chain_id=project_data['id'], defaults={ - "block_height": height, - "block_timestamp": datetime.fromtimestamp(block_timestamp / 1000000000), - "updated_at": timezone.now(), - }, - ) # better than ovverriding model's save method to get a singleton? we need only one entry - return height - - -def get_block_height(key: str) -> int: - block_height = cache.get(key) - if not block_height: - record = BlockHeight.objects.filter(id=1).first() - block_height = 104_922_190 if not record else record.block_height - return block_height + 'image_url': project_data['image_url'], + 'video_url': project_data['video_url'], + 'name': project_data['name'], + 'overview': project_data['overview'], + 'owner': owner, + 'payout_address': payout_address, + 'status': ProjectStatus("NEW").name, + 'submited_ms': project_data['submited_ms'], + 'updated_ms': project_data['updated_ms'], + } + ) + + for contact_data in project_data['contacts']: + contact, _ = ProjectContact.objects.get_or_create( + name=contact_data['name'], + value=contact_data['value'] + ) + project.contacts.add(contact) + + for contract_data in project_data['contracts']: + contract, _ = ProjectContract.objects.get_or_create( + name=contract_data['name'], + contract_address=contract_data['contract_address'] + ) + project.contracts.add(contract) + + # Create and associate ProjectRepositories + for repo_data in project_data['repositories']: + repo, _ = ProjectRepository.objects.get_or_create( + label=repo_data['label'], + url=repo_data['url'] + ) + project.repositories.add(repo) + + for funding_data in project_data['funding_histories']: + ProjectFundingHistory.objects.create( + source=funding_data['source'], + amount=funding_data['amount'], + denomination=funding_data['denomination'], # Note: There's a typo in the event data + description=funding_data['description'], + timestamp=timezone.datetime.fromtimestamp(funding_data['funded_ms'] / 1000) + ) + + # Associate admins + for admin_address in project_data['admins']: + admin, _ = Account.objects.get_or_create(id=admin_address) + project.admins.add(admin) + + # Associate team members + for team_member_data in project_data['team_members']: + team_member, _ = Account.objects.get_or_create(id=team_member_data['value']) + project.team_members.add(team_member) + + if created: + logger.info(f"Created new Project: {project.id}") + else: + logger.info(f"Updated existing Project: {project.id}") + + return True + + except Exception as e: + logger.error(f"Error processing project event: {str(e)}") + return False + + + +def create_or_update_round(event_data, contract_id, timestamp, chain_id="stellar"): + try: + logger.info(f"create_or_update_round: {event_data}, {contract_id}, {chain_id}") + # Create Round + if chain_id == "NEAR": + event_data = event_data.get('round_detail') + round_id = event_data.get('id') + owner_address = event_data.get('owner') + chain = Chain.objects.get(name=chain_id) + owner, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=owner_address) + factory_contract, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=contract_id) + remaining_dist_address = event_data.get('remaining_dist_address', event_data.get('remaining_funds_redistribution_recipient')) + if remaining_dist_address: + remaining_dist_address_obj, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=remaining_dist_address) + + remaining_dist_by = event_data.get('remaining_dist_by', event_data.get('remaining_funds_redistributed_by')) + if remaining_dist_by: + remaining_dist_by_obj, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=remaining_dist_by) + + if event_data.get('round_complete_ms', event_data.get('round_complete')): + round_time_stamp = datetime.fromtimestamp(event_data.get('round_complete_ms', event_data.get('round_complete')) / 1000) + else: + round_time_stamp = None + if chain_id == "NEAR": + use_vault = True + else: + use_vault = event_data.get('use_vault', False) + + round_obj, created = Round.objects.update_or_create( + on_chain_id=round_id, + chain=chain, + defaults={ + 'owner': owner, + 'factory_contract': factory_contract, + 'chain': chain, + 'name': event_data.get('name'), + 'description': event_data.get('description'), + 'expected_amount': event_data.get('expected_amount'), + 'application_start': datetime.fromtimestamp(event_data.get('application_start_ms') / 1000) if event_data.get('application_start_ms') else None, + 'application_end': datetime.fromtimestamp(event_data.get('application_end_ms') / 1000) if event_data.get('application_end_ms') else None, + 'voting_start': datetime.fromtimestamp(event_data.get('voting_start_ms') / 1000), + 'voting_end': datetime.fromtimestamp(event_data.get('voting_end_ms') / 1000), + 'use_whitelist_voting': event_data.get('use_whitelist_voting', False), + 'use_whitelist_application': event_data.get('use_whitelist_application', False), + 'application_wl_list_id': event_data.get('application_wl_list_id'), + 'voting_wl_list_id': event_data.get('voting_wl_list_id'), + 'use_vault': use_vault or False, + 'num_picks_per_voter': event_data.get('num_picks_per_voter'), + 'max_participants': event_data.get('max_participants'), + 'allow_applications': event_data.get('allow_applications'), + 'allow_remaining_dist': event_data.get('allow_remaining_dist', event_data.get('allow_remaining_funds_redistribution')), + 'compliance_end': datetime.fromtimestamp(event_data.get('compliance_end_ms') / 1000) if event_data.get('compliance_end_ms') else None, + 'compliance_period_ms': event_data.get('compliance_period_ms'), + 'compliance_req_desc': event_data.get('compliance_req_desc', event_data.get('compliance_requirement_description')), + 'cooldown_end': datetime.fromtimestamp(event_data.get('cooldown_end_ms') / 1000) if event_data.get('cooldown_end_ms') else None, + 'cooldown_period_ms': event_data.get('cooldown_period_ms'), + 'is_video_required': event_data.get('is_video_required') or event_data.get('application_requires_video', False) , + 'referrer_fee_basis_points': event_data.get('referrer_fee_basis_points'), + 'remaining_dist_address_id': remaining_dist_address, + 'remaining_dist_at_ms': datetime.fromtimestamp(event_data.get('remaining_dist_at_ms') / 1000) if event_data.get('remaining_dist_at_ms') else None, + 'remaining_dist_by_id': remaining_dist_by, + 'remaining_dist_memo': event_data.get('remaining_dist_memo', event_data.get('remaining_funds_redistribution_memo')), + 'round_complete': round_time_stamp, + 'vault_total_deposits': event_data.get('vault_total_deposits'), + 'current_vault_balance': event_data.get('current_vault_balance'), + 'deployed_at': timestamp + } + ) + + # Create contacts for the round + for contact in event_data.get('contacts', []): + contact_obj, created = ProjectContact.objects.update_or_create( + name=contact['name'], + value=contact['value'] + ) + round_obj.contacts.add(contact_obj) + + logger.info(f"Created/Updated Round: {round_id}") + return True + except Exception as e: + logger.error(f"Error processing rounds event: {str(e)}") + return False + + +def process_application_to_round(event_data, tx_hash): + try: + # Process application to Round + round_id, application_data = event_data[0], event_data[1] + applicant_id = application_data.get('applicant_id') + status = PotApplicationStatus[application_data['status'].upper()] + submitted_at = datetime.fromtimestamp(application_data['submited_ms'] / 1000) + updated_at = ( + datetime.fromtimestamp(application_data['updated_ms'] / 1000) + if application_data['updated_ms'] else None + ) + + round_obj = Round.objects.get(on_chain_id=round_id) + applicant, _ = Account.objects.get_or_create(id=applicant_id) + + pot_application, created = PotApplication.objects.update_or_create( + round=round_obj, + applicant=applicant, + defaults={ + 'message': application_data['applicant_note'], + 'status': status, + 'submitted_at': submitted_at, + 'updated_at': updated_at, + 'tx_hash': tx_hash + } + ) + logger.info(f"Processed application for Round: {round_id}, Applicant: {applicant_id}") + return True + except Exception as e: + logger.error(f"Error processing rounds applications event: {str(e)}") + return False + + + +def create_round_application(event_data, tx_hash, chain_id="stellar"): + try: + logger.info(f"create_round_application: {event_data}, {tx_hash}, {chain_id}") + if type(event_data) == list: + round_id, application_data = event_data[0], event_data[1] + else: + event_data = event_data['application'] + round_id, application_data = event_data["round_id"], event_data + chain = Chain.objects.get(name=chain_id) + applicant, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=application_data["applicant_id"]) + round_obj = Round.objects.get(on_chain_id=round_id, chain=chain) + if chain_id == "NEAR": + status = PotApplicationStatus[application_data['status'].upper()] + else: + status = PotApplicationStatus[application_data['status'][0].upper()] + logger.info(f"Creating application for round: {round_id}") + + appl_defaults = { + "message": application_data["applicant_note"], + "submitted_at": datetime.fromtimestamp(application_data["submited_ms"] / 1000), + "status": status, + "tx_hash": tx_hash, + } + + + PotApplication.objects.update_or_create( + applicant=applicant, + round=round_obj, + project=applicant, + defaults=appl_defaults, + ) + + return True + except Exception as e: + logger.error(f"Error creating applications to rounds: {str(e)}") + return False + + +def process_rounds_deposit_event(event_data, tx_hash, chain_id="stellar"): + try: + logger.info(f"process_rounds_deposit_event: {event_data}, {tx_hash}, {chain_id}") + # Process deposit event + if type(event_data) == list: + round_id, deposit_data = event_data + else: + event_data = event_data['deposit'] + round_id, deposit_data = event_data["round_id"], event_data + chain = Chain.objects.get(name=chain_id) + round_obj = Round.objects.get(on_chain_id=round_id, chain=chain) + amount = deposit_data["total_amount"] + depositor, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=deposit_data["depositor_id"]) + + # Create or update a RoundDeposit object + deposit, created = RoundDeposit.objects.update_or_create( + round=round_obj, + on_chain_id=deposit_data.get("deposit_id", deposit_data.get("id")), + depositor=depositor, + defaults={ + 'amount': amount, + 'protocol_fee': deposit_data["protocol_fee"], + 'referrer_fee': deposit_data["referrer_fee"], + 'memo': deposit_data["memo"], + 'tx_hash': tx_hash, + 'deposit_at': datetime.fromtimestamp(deposit_data["deposited_at"] / 1000), + } + ) + + round_obj.vault_total_deposits = str(int(round_obj.vault_total_deposits or 0) + int(amount)) + round_obj.current_vault_balance = str(int(round_obj.current_vault_balance or 0) + int(deposit_data["net_amount"])) + round_obj.save() + round_obj.update_vault_usd_equivalent() + + logger.info(f"Processed deposit for Round: {round_id}, Depositor: {depositor.id}, Amount: {amount}") + return True + except Exception as e: + logger.error(f"Error processing deposits to rounds: {str(e)}") + return False + + + +def create_round_payout(event_data, tx_hash, chain_id="stellar"): + try: + logger.info(f"create_round_payout: {event_data}, {tx_hash}, {chain_id}") + round_id, payout_data = event_data + amount = payout_data["amount"] + recipient_id = payout_data["recipient_id"] + memo = payout_data.get("memo") + + chain = Chain.objects.get(name=chain_id) + token_acct, _ = Account.objects.get_or_create(defaults={"chain":chain},id=chain_id.lower()) + token, _ = Token.objects.get_or_create( + account=token_acct + ) + round_obj = Round.objects.get(on_chain_id=round_id, chain=chain) + + payout = PotPayout( + round=round_obj, + on_chain_id=payout_data["id"], + amount=amount, + recipient_id=recipient_id, + memo=memo, + token=token, + paid_at=None, + tx_hash=tx_hash, + ) + payout.save() + logger.info(f"Created payout for round {round_id} to {recipient_id} for amount {amount}, on chain {chain_id}") + return True + except Exception as e: + logger.error(f"Error creating round payout: {str(e)}") + return False + + +def update_round_payout(event_data, tx_hash, chain_id="stellar"): + try: + logger.info(f"update_round_payout: {event_data}, {tx_hash}, {chain_id}") + _, payout_data = event_data + payout_on_chain_id = payout_data["id"] + amount = payout_data["amount"] + paid_at_ms = payout_data.get("paid_at_ms") + chain = Chain.objects.get(name=chain_id) + recipient_id, _ = Account.objects.get_or_create(defaults={"chain":chain}, id=payout_data["recipient_id"]) + memo = payout_data.get("memo") + payout = PotPayout.objects.get(on_chain_id=payout_on_chain_id) + payout.amount = amount + payout.paid_at = datetime.fromtimestamp(paid_at_ms / 1000) + payout.recipient = recipient_id + payout.tx_hash = tx_hash + payout.memo = memo + payout.save() + logger.info(f"Updated payout {payout_on_chain_id} for recipient {recipient_id} with amount {amount}.") + return True + except Exception as e: + logger.error(f"Error updating Payout. {str(e)}") + return False \ No newline at end of file diff --git a/lists/admin.py b/lists/admin.py index db244ed..b665bd2 100644 --- a/lists/admin.py +++ b/lists/admin.py @@ -7,8 +7,12 @@ class ListAdmin(admin.ModelAdmin): list_display = ( "id", + "on_chain_id", "name", + "description", + "cover_image_url", "owner", + "admin_only_registrations", "default_registration_status", "created_at", "updated_at", diff --git a/lists/api.py b/lists/api.py index 44ef940..b906d21 100644 --- a/lists/api.py +++ b/lists/api.py @@ -1,52 +1,261 @@ -from django.db.models import Exists, OuterRef +import random + +from django.db.models import Q from django.utils import timezone from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_page -from rest_framework.pagination import LimitOffsetPagination +from drf_spectacular.utils import ( + OpenApiExample, + OpenApiParameter, + OpenApiResponse, + extend_schema, +) +from django.db.models import Count from rest_framework.request import Request from rest_framework.response import Response from rest_framework.views import APIView -from .models import List -from .serializers import ListRegistrationSerializer, ListSerializer +from accounts.models import Account +from api.pagination import pagination_parameters +from api.pagination import CustomSizePageNumberPagination + +from .models import List, ListRegistration, ListRegistrationStatus +from .serializers import ( + PAGINATED_LIST_EXAMPLE, + PAGINATED_LIST_REGISTRATION_EXAMPLE, + SIMPLE_LIST_EXAMPLE, + SIMPLE_LIST_REGISTRATION_EXAMPLE, + ListRegistrationSerializer, + ListSerializer, + PaginatedListRegistrationsResponseSerializer, + PaginatedListsResponseSerializer, +) -class ListsAPI(APIView, LimitOffsetPagination): - def dispatch(self, request, *args, **kwargs): - return super(ListsAPI, self).dispatch(request, *args, **kwargs) +class ListsListAPI(APIView, CustomSizePageNumberPagination): - @method_decorator(cache_page(60 * 15)) # Cache for 15 mins + @extend_schema( + parameters=[ + OpenApiParameter( + "account", + str, + OpenApiParameter.QUERY, + description="Filter lists by account", + ), + OpenApiParameter( + "admin", + str, + OpenApiParameter.QUERY, + description="Filter lists by admin", + ), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedListsResponseSerializer, + description="Returns a paginated list of lists", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for lists", + value=PAGINATED_LIST_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Account not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 1)) def get(self, request: Request, *args, **kwargs): - list_id = kwargs.get("list_id", None) - action = kwargs.get("action", None) - if list_id: - # Request pertaining to a specific list_id + lists = List.objects.all().select_related("owner").prefetch_related("admins", "upvotes").annotate(registrations_count=Count('registrations')) + account_id = request.query_params.get("account") + if account_id: try: - list = List.objects.get(id=list_id) - except List.DoesNotExist: + account = Account.objects.get(id=account_id) + lists = lists.filter(owner=account) + except Account.DoesNotExist: return Response( - {"message": f"List with ID {list_id} not found."}, status=404 + {"message": f"Account with ID {account_id} not found."}, status=404 ) - if action: - # Handle action if present; only valid option currently is "registrations" - if action == "registrations": - # Return registrations for list_id - registrations = list.registrations.all() - results = self.paginate_queryset(registrations, request, view=self) - serializer = ListRegistrationSerializer(results, many=True) - return self.get_paginated_response(serializer.data) - else: - return Response( - {"error": f"Invalid action: {action}"}, - status=400, - ) - else: - # Return list - serializer = ListSerializer(list) - return Response(serializer.data) - else: - # Return all lists - lists = List.objects.all() - results = self.paginate_queryset(lists, request, view=self) - serializer = ListSerializer(results, many=True) - return self.get_paginated_response(serializer.data) + admin_id = request.query_params.get("admin") + if admin_id: + try: + admin = Account.objects.get(id=admin_id) + lists = lists.filter(admins=admin) + except Account.DoesNotExist: + return Response( + {"message": f"Admin with ID {admin_id} not found."}, status=404 + ) + results = self.paginate_queryset(lists, request, view=self) + serializer = ListSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class ListDetailAPI(APIView): + + @extend_schema( + parameters=[ + OpenApiParameter("list_id", int, OpenApiParameter.PATH), + ], + responses={ + 200: OpenApiResponse( + response=ListSerializer, + description="Returns list details", + examples=[ + OpenApiExample( + "example-1", + summary="Simple list example", + description="Example response for list detail", + value=SIMPLE_LIST_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="List not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + list_id = kwargs.get("list_id") + try: + list_obj = List.objects.select_related("owner").prefetch_related("admins").get(on_chain_id=list_id) + except List.DoesNotExist: + return Response( + {"message": f"List with onchain ID {list_id} not found."}, status=404 + ) + serializer = ListSerializer(list_obj) + return Response(serializer.data) + + +class ListRegistrationsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("list_id", int, OpenApiParameter.PATH), + OpenApiParameter( + "status", + str, + OpenApiParameter.QUERY, + description="Filter registrations by status", + ), + OpenApiParameter( + "category", + str, + OpenApiParameter.QUERY, + description="Filter registrations by category", + ), + OpenApiParameter( + "search", + str, + OpenApiParameter.QUERY, + description="Search registrants by name or account ID", + ), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedListRegistrationsResponseSerializer, + description="Returns registrations for the list", + examples=[ + OpenApiExample( + "example-1", + summary="Simple registration example", + description="Example response for list registrations", + value=PAGINATED_LIST_REGISTRATION_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="List not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + @method_decorator(cache_page(60 * 1)) + def get(self, request: Request, *args, **kwargs): + list_id = kwargs.get("list_id") + # list_obj = List.objects.get(on_chain_id=list_id) + registrations = ListRegistration.objects.filter(list__on_chain_id=list_id).select_related("list", "list__owner", "registrant", "registered_by").prefetch_related("list__admins", "list__upvotes") + + # registrations = list_obj.registrations.select_related("list", "list__owner", "registrant", "registered_by").prefetch_related("list__admins").annotate(registrations_count=Count('list_registrations')).all() + status_param = request.query_params.get("status") + category_param = request.query_params.get("category") + search_param = request.query_params.get("search") + if status_param: + if status_param not in ListRegistrationStatus.values: + return Response( + {"message": f"Invalid status value: {status_param}"}, status=400 + ) + registrations = registrations.filter(status=status_param) + if category_param: + category_regex_pattern = rf'\[.*?"{category_param}".*?\]' + registrations = registrations.filter( + registrant__near_social_profile_data__plCategories__iregex=category_regex_pattern + ) + if search_param: + registrations = registrations.filter( + Q(registrant__id__icontains=search_param) | Q(registrant__near_social_profile_data__name__icontains=search_param) + ) + results = self.paginate_queryset(registrations, request, view=self) + serializer = ListRegistrationSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class ListRandomRegistrationAPI(APIView): + + @extend_schema( + parameters=[ + OpenApiParameter("list_id", int, OpenApiParameter.PATH), + OpenApiParameter( + "status", + str, + OpenApiParameter.QUERY, + description="Filter registrations by status", + ), + ], + responses={ + 200: OpenApiResponse( + response=ListRegistrationSerializer, + description="Returns a random registration for the list", + examples=[ + OpenApiExample( + "example-1", + summary="Simple registration example", + description="Example response for list registration", + value=SIMPLE_LIST_REGISTRATION_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="List not found"), + 500: OpenApiResponse(description="Internal server error"), + }, + ) + def get(self, request: Request, *args, **kwargs): + list_id = kwargs.get("list_id") + # list_obj = List.objects.get(on_chain_id=list_id) + registrations = ListRegistration.objects.filter(list__on_chain_id=list_id).select_related("list__owner", "registrant", "registered_by").prefetch_related("list__admins") + + # registrations = list_obj.registrations.all() + status_param = request.query_params.get("status") + if status_param: + if status_param not in ListRegistrationStatus.values: + return Response( + {"message": f"Invalid status value: {status_param}"}, status=400 + ) + registrations = registrations.filter(status=status_param) + + # Get a random registration + registrations_list = list(registrations) + if not registrations_list: + return Response( + {"message": "No registrations found for the given criteria."}, + status=404, + ) + + registration = random.choice(registrations_list) + serializer = ListRegistrationSerializer(registration) + return Response(serializer.data) diff --git a/lists/migrations/0003_alter_listupvote_options.py b/lists/migrations/0003_alter_listupvote_options.py new file mode 100644 index 0000000..96ef6e5 --- /dev/null +++ b/lists/migrations/0003_alter_listupvote_options.py @@ -0,0 +1,17 @@ +# Generated by Django 5.0.4 on 2024-06-05 14:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("lists", "0002_alter_listupvote_options_and_more"), + ] + + operations = [ + migrations.AlterModelOptions( + name="listupvote", + options={"verbose_name_plural": "List Upvotes"}, + ), + ] diff --git a/lists/migrations/0004_list_on_chain_id.py b/lists/migrations/0004_list_on_chain_id.py new file mode 100644 index 0000000..5b4f085 --- /dev/null +++ b/lists/migrations/0004_list_on_chain_id.py @@ -0,0 +1,24 @@ +# Generated by Django 5.0.4 on 2024-06-14 17:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("lists", "0003_alter_listupvote_options"), + ] + + operations = [ + migrations.AddField( + model_name="list", + name="on_chain_id", + field=models.IntegerField( + default=1, + help_text="List ID in contract", + unique=True, + verbose_name="contract list ID", + ), + preserve_default=False, + ), + ] diff --git a/lists/migrations/0005_alter_list_id.py b/lists/migrations/0005_alter_list_id.py new file mode 100644 index 0000000..f70e260 --- /dev/null +++ b/lists/migrations/0005_alter_list_id.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.4 on 2024-06-14 17:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("lists", "0004_list_on_chain_id"), + ] + + operations = [ + migrations.AlterField( + model_name="list", + name="id", + field=models.AutoField( + help_text="List ID in DB (does not necessarily correspond to on-chain ID).", + primary_key=True, + serialize=False, + verbose_name="list id", + ), + ), + ] diff --git a/lists/migrations/0006_alter_listregistration_unique_together.py b/lists/migrations/0006_alter_listregistration_unique_together.py new file mode 100644 index 0000000..9dfae2d --- /dev/null +++ b/lists/migrations/0006_alter_listregistration_unique_together.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.4 on 2024-06-14 17:59 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0002_account_near_social_profile_data"), + ("lists", "0005_alter_list_id"), + ] + + operations = [ + migrations.AlterUniqueTogether( + name="listregistration", + unique_together={("list", "registrant")}, + ), + ] diff --git a/lists/migrations/0007_alter_list_cover_image_url_alter_list_description_and_more.py b/lists/migrations/0007_alter_list_cover_image_url_alter_list_description_and_more.py new file mode 100644 index 0000000..66ef357 --- /dev/null +++ b/lists/migrations/0007_alter_list_cover_image_url_alter_list_description_and_more.py @@ -0,0 +1,67 @@ +# Generated by Django 5.0.6 on 2024-07-25 17:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("lists", "0006_alter_listregistration_unique_together"), + ] + + operations = [ + migrations.AlterField( + model_name="list", + name="cover_image_url", + field=models.URLField( + blank=True, + help_text="Cover image url.", + null=True, + verbose_name="cover image url", + ), + ), + migrations.AlterField( + model_name="list", + name="description", + field=models.TextField( + blank=True, + help_text="List description.", + max_length=256, + null=True, + verbose_name="description", + ), + ), + migrations.AlterField( + model_name="listregistration", + name="admin_notes", + field=models.TextField( + blank=True, + help_text="Admin notes.", + max_length=1024, + null=True, + verbose_name="admin notes", + ), + ), + migrations.AlterField( + model_name="listregistration", + name="registrant_notes", + field=models.TextField( + blank=True, + help_text="Registrant notes.", + max_length=1024, + null=True, + verbose_name="registrant notes", + ), + ), + migrations.AlterField( + model_name="listregistration", + name="tx_hash", + field=models.CharField( + blank=True, + help_text="Transaction hash.", + max_length=64, + null=True, + verbose_name="transaction hash", + ), + ), + ] diff --git a/lists/models.py b/lists/models.py index ad412d5..9754f93 100644 --- a/lists/models.py +++ b/lists/models.py @@ -13,10 +13,16 @@ class ListRegistrationStatus(models.TextChoices): class List(models.Model): - id = models.PositiveIntegerField( + id = models.AutoField( _("list id"), primary_key=True, - help_text=_("List id."), + help_text=_("List ID in DB (does not necessarily correspond to on-chain ID)."), + ) + on_chain_id = models.IntegerField( + _("contract list ID"), + null=False, + unique=True, + help_text=_("List ID in contract"), ) owner = models.ForeignKey( Account, @@ -25,6 +31,11 @@ class List(models.Model): null=False, help_text=_("List owner."), ) + admins = models.ManyToManyField( + Account, + related_name="admin_lists", + help_text=_("List admins."), + ) name = models.CharField( _("name"), max_length=64, @@ -35,11 +46,13 @@ class List(models.Model): _("description"), max_length=256, null=True, + blank=True, help_text=_("List description."), ) cover_image_url = models.URLField( _("cover image url"), null=True, + blank=True, help_text=_("Cover image url."), ) admin_only_registrations = models.BooleanField( @@ -63,11 +76,6 @@ class List(models.Model): _("updated at"), help_text=_("List last update date."), ) - admins = models.ManyToManyField( - Account, - related_name="admin_lists", - help_text=_("List admins."), - ) class Meta: indexes = [ @@ -155,20 +163,25 @@ class ListRegistration(models.Model): _("registrant notes"), max_length=1024, null=True, + blank=True, help_text=_("Registrant notes."), ) admin_notes = models.TextField( _("admin notes"), max_length=1024, null=True, + blank=True, help_text=_("Admin notes."), ) tx_hash = models.CharField( _("transaction hash"), max_length=64, null=True, + blank=True, help_text=_("Transaction hash."), ) class Meta: indexes = [models.Index(fields=["id", "status"], name="idx_list_id_status")] + + unique_together = (("list", "registrant"),) diff --git a/lists/serializers.py b/lists/serializers.py index a6cef59..697e9b2 100644 --- a/lists/serializers.py +++ b/lists/serializers.py @@ -1,15 +1,120 @@ +from rest_framework import serializers from rest_framework.serializers import ModelSerializer, SerializerMethodField -from .models import List, ListRegistration +from accounts.serializers import SIMPLE_ACCOUNT_EXAMPLE, AccountSerializer + +from .models import List, ListRegistration, ListUpvote + + +class ListUpvoteSerializer(ModelSerializer): + class Meta: + model = ListUpvote + fields = '__all__' class ListSerializer(ModelSerializer): + registrations_count = serializers.IntegerField(required=False) class Meta: model = List - fields = "__all__" # TODO: potentially adjust this e.g. for formatting of datetimes, adding convenience fields etc + fields = [ + "id", + "on_chain_id", + "owner", + "admins", + "name", + "description", + "upvotes", + "registrations_count", + "cover_image_url", + "admin_only_registrations", + "default_registration_status", + "created_at", + "updated_at", + ] + + owner = AccountSerializer() + admins = AccountSerializer(many=True) + upvotes = ListUpvoteSerializer(many=True) + + # def get_owner(self, obj): + # return AccountSerializer(obj.owner).data + + # def get_admins(self, obj): + # return AccountSerializer(obj.admins.all(), many=True).data class ListRegistrationSerializer(ModelSerializer): class Meta: model = ListRegistration - fields = "__all__" # TODO: potentially adjust this e.g. for formatting of datetimes, adding convenience fields etc + fields = [ + "id", + "list_id", + "registrant", + "registered_by", + "status", + "submitted_at", + "updated_at", + "registrant_notes", + "admin_notes", + "tx_hash", + ] + + registrant = AccountSerializer() + registered_by = AccountSerializer() + + +SIMPLE_LIST_EXAMPLE = { + "id": 1, + "on_chain_id": 1, + "owner": SIMPLE_ACCOUNT_EXAMPLE, + "admins": [SIMPLE_ACCOUNT_EXAMPLE], + "name": "Potlock Public Goods Registry", + "description": "The official NEAR Protocol Public Goods Registry", + "cover_image_url": None, + "admin_only_registrations": False, + "default_registration_status": "Approved", + "created_at": "2024-03-27T15:24:46.104000Z", + "updated_at": "2024-04-30T19:00:51.002000Z", +} + +PAGINATED_LIST_EXAMPLE = { + "count": 1, + "next": None, + "previous": None, + "results": [SIMPLE_LIST_EXAMPLE], +} + + +class PaginatedListsResponseSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.CharField(allow_null=True) + previous = serializers.CharField(allow_null=True) + results = ListSerializer(many=True) + + +SIMPLE_LIST_REGISTRATION_EXAMPLE = { + "id": 10, + "list_id": 1, + "status": "Approved", + "submitted_at": "2024-06-05T18:01:02.319Z", + "updated_at": "2024-06-05T18:01:02.319Z", + "registrant_notes": "I'm excited to apply for this list", + "admin_notes": "This is a great project that I want on my list.", + "tx_hash": "EVMQsXorrrxPLHfK9UnbzFUy1SVYWvc8hwSGQZs4RbTk", + "registrant": SIMPLE_ACCOUNT_EXAMPLE, + "registered_by": SIMPLE_ACCOUNT_EXAMPLE, +} + +PAGINATED_LIST_REGISTRATION_EXAMPLE = { + "count": 1, + "next": None, + "previous": None, + "results": [SIMPLE_LIST_REGISTRATION_EXAMPLE], +} + + +class PaginatedListRegistrationsResponseSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.CharField(allow_null=True) + previous = serializers.CharField(allow_null=True) + results = ListRegistrationSerializer(many=True) diff --git a/nadabot/__init__.py b/nadabot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/nadabot/admin.py b/nadabot/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/nadabot/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/nadabot/api.py b/nadabot/api.py new file mode 100644 index 0000000..ea6a335 --- /dev/null +++ b/nadabot/api.py @@ -0,0 +1 @@ +# nadabot api \ No newline at end of file diff --git a/nadabot/apps.py b/nadabot/apps.py new file mode 100644 index 0000000..cc21c7d --- /dev/null +++ b/nadabot/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class NadabotConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "nadabot" diff --git a/nadabot/migrations/0001_initial.py b/nadabot/migrations/0001_initial.py new file mode 100644 index 0000000..2deb505 --- /dev/null +++ b/nadabot/migrations/0001_initial.py @@ -0,0 +1,421 @@ +# Generated by Django 5.0.6 on 2024-07-11 14:21 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ("accounts", "0002_account_near_social_profile_data"), + ] + + operations = [ + migrations.CreateModel( + name="NadabotRegistry", + fields=[ + ( + "id", + models.OneToOneField( + help_text="Nadabot registry id.", + on_delete=django.db.models.deletion.CASCADE, + primary_key=True, + related_name="registry_id", + serialize=False, + to="accounts.account", + ), + ), + ( + "default_human_threshold", + models.PositiveIntegerField( + default=0, + help_text="default human threshold.", + verbose_name="default human threshold", + ), + ), + ( + "created_at", + models.DateTimeField( + help_text="Registry creation date.", verbose_name="created at" + ), + ), + ( + "updated_at", + models.DateTimeField( + help_text="Registry last update date.", + verbose_name="updated at", + ), + ), + ( + "source_metadata", + models.JSONField( + help_text="nadabot registry source metadata.", + verbose_name="source metadata", + ), + ), + ( + "admins", + models.ManyToManyField( + help_text="registry admins.", + related_name="nadabot_admin_registries", + to="accounts.account", + ), + ), + ( + "blacklisted_accounts", + models.ManyToManyField( + help_text="registry blacklisted accounts.", + related_name="registry_blacklisted_in", + to="accounts.account", + ), + ), + ( + "owner", + models.ForeignKey( + help_text="Nadabot Registry owner.", + on_delete=django.db.models.deletion.CASCADE, + related_name="nadabot_owner_registries", + to="accounts.account", + ), + ), + ], + ), + migrations.CreateModel( + name="Provider", + fields=[ + ( + "id", + models.AutoField( + help_text="Provider id.", + primary_key=True, + serialize=False, + verbose_name="provider id", + ), + ), + ( + "on_chain_id", + models.IntegerField( + help_text="Provider id in contract", + verbose_name="contract provider id", + ), + ), + ( + "method_name", + models.CharField( + help_text="Method name of the external contract that is the source of this provider.", + max_length=100, + verbose_name="method name", + ), + ), + ( + "name", + models.CharField( + help_text="Name of the provider, e.g. 'I Am Human'.", + max_length=64, + verbose_name="provider name", + ), + ), + ( + "description", + models.TextField( + blank=True, + help_text="Description of the provider.", + null=True, + verbose_name="description", + ), + ), + ( + "status", + models.CharField( + choices=[ + ("Pending", "Pending"), + ("Active", "Active"), + ("Deactivated", "Deactivated"), + ], + db_index=True, + help_text="Status of the provider.", + max_length=20, + verbose_name="status", + ), + ), + ( + "admin_notes", + models.TextField( + blank=True, + help_text="Admin notes, e.g. reason for flagging or marking inactive.", + null=True, + verbose_name="admin notes", + ), + ), + ( + "default_weight", + models.PositiveIntegerField( + help_text="Default weight for this provider, e.g. 100.", + verbose_name="default weight", + ), + ), + ( + "gas", + models.BigIntegerField( + blank=True, + help_text="Custom gas amount required.", + null=True, + verbose_name="gas", + ), + ), + ( + "tags", + models.JSONField( + blank=True, + help_text="Optional tags.", + null=True, + verbose_name="tags", + ), + ), + ( + "icon_url", + models.URLField( + blank=True, + help_text="Optional icon URL.", + null=True, + verbose_name="icon URL", + ), + ), + ( + "external_url", + models.URLField( + blank=True, + help_text="Optional external URL.", + null=True, + verbose_name="external URL", + ), + ), + ( + "submitted_at", + models.DateTimeField( + db_index=True, + help_text="Timestamp of when this provider was submitted.", + verbose_name="submitted at (milliseconds)", + ), + ), + ( + "stamp_validity_ms", + models.BigIntegerField( + blank=True, + db_index=True, + help_text="Milliseconds that stamps from this provider are valid for before they expire.", + null=True, + verbose_name="stamp validity", + ), + ), + ( + "account_id_arg_name", + models.CharField( + help_text="Name of account ID argument, e.g. 'account_id' or 'accountId' or 'account'.", + max_length=100, + verbose_name="account ID argument name", + ), + ), + ( + "custom_args", + models.CharField( + help_text="Custom args as Base64VecU8.", + null=True, + verbose_name="custom args", + ), + ), + ( + "contract", + models.ForeignKey( + help_text="Contract ID of the external contract that is the source of this provider.", + max_length=100, + on_delete=django.db.models.deletion.CASCADE, + related_name="provider_instances", + to="accounts.account", + verbose_name="contract ID", + ), + ), + ( + "registry", + models.ForeignKey( + help_text="registry under which provider was registered", + on_delete=django.db.models.deletion.CASCADE, + related_name="providers", + to="nadabot.nadabotregistry", + verbose_name="registry", + ), + ), + ( + "submitted_by", + models.ForeignKey( + help_text="User who submitted this provider.", + max_length=100, + on_delete=django.db.models.deletion.CASCADE, + related_name="providers_submitted", + to="accounts.account", + verbose_name="submitted by", + ), + ), + ], + ), + migrations.CreateModel( + name="Group", + fields=[ + ( + "id", + models.PositiveIntegerField( + help_text="Group id.", + primary_key=True, + serialize=False, + verbose_name="group id", + ), + ), + ( + "name", + models.CharField( + help_text="name given to the group", + max_length=100, + verbose_name="group name", + ), + ), + ( + "rule_type", + models.CharField( + choices=[ + ("Highest", "Highest"), + ("Lowest", "Lowest"), + ("Sum", "Sum"), + ("Diminishing_returns", "Diminishing Returns"), + ("Increasing_returns", "Increasing Returns"), + ], + help_text="The rule this group uses.", + max_length=100, + null=True, + verbose_name="rule type", + ), + ), + ( + "rule_val", + models.PositiveIntegerField( + help_text="An optional value that the group's rule choices might carry.", + null=True, + verbose_name="rule value", + ), + ), + ( + "created_at", + models.DateTimeField( + help_text="Group creation date.", verbose_name="created at" + ), + ), + ( + "updated_at", + models.DateTimeField( + help_text="Group last update date.", verbose_name="updated at" + ), + ), + ( + "providers", + models.ManyToManyField( + help_text="group providers.", + related_name="groups", + to="nadabot.provider", + ), + ), + ], + ), + migrations.CreateModel( + name="Stamp", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "verified_at", + models.DateField( + help_text="The date of verification.", + verbose_name="verification date", + ), + ), + ( + "provider", + models.ForeignKey( + help_text="The provider the user verified with.", + on_delete=django.db.models.deletion.CASCADE, + related_name="stamps", + to="nadabot.provider", + verbose_name="provider", + ), + ), + ( + "user", + models.ForeignKey( + help_text="The user who earned the stamp.", + on_delete=django.db.models.deletion.CASCADE, + related_name="stamps", + to="accounts.account", + verbose_name="user", + ), + ), + ], + ), + migrations.CreateModel( + name="BlackList", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "reason", + models.TextField( + blank=True, + help_text="Reason account is blacklisted", + null=True, + verbose_name="blacklist reason", + ), + ), + ( + "date_blacklisted", + models.DateTimeField( + help_text="Blacklist Entry Date.", verbose_name="blacklisted on" + ), + ), + ( + "account", + models.ForeignKey( + help_text="Nadabot Registry Blacklisted from.", + on_delete=django.db.models.deletion.CASCADE, + related_name="registries_blacklisted_from", + to="accounts.account", + ), + ), + ( + "registry", + models.ForeignKey( + help_text="blacklist entries by this registry", + on_delete=django.db.models.deletion.CASCADE, + related_name="blacklists", + to="nadabot.nadabotregistry", + verbose_name="registry", + ), + ), + ], + options={ + "unique_together": {("registry", "account")}, + }, + ), + ] diff --git a/nadabot/migrations/0002_rename_id_nadabotregistry_account.py b/nadabot/migrations/0002_rename_id_nadabotregistry_account.py new file mode 100644 index 0000000..eb5beda --- /dev/null +++ b/nadabot/migrations/0002_rename_id_nadabotregistry_account.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.6 on 2024-07-19 22:52 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("nadabot", "0001_initial"), + ] + + operations = [ + migrations.RenameField( + model_name="nadabotregistry", + old_name="id", + new_name="account", + ), + ] diff --git a/nadabot/migrations/0003_alter_group_rule_type_alter_group_rule_val_and_more.py b/nadabot/migrations/0003_alter_group_rule_type_alter_group_rule_val_and_more.py new file mode 100644 index 0000000..ea2de00 --- /dev/null +++ b/nadabot/migrations/0003_alter_group_rule_type_alter_group_rule_val_and_more.py @@ -0,0 +1,51 @@ +# Generated by Django 5.0.6 on 2024-07-25 17:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("nadabot", "0002_rename_id_nadabotregistry_account"), + ] + + operations = [ + migrations.AlterField( + model_name="group", + name="rule_type", + field=models.CharField( + blank=True, + choices=[ + ("Highest", "Highest"), + ("Lowest", "Lowest"), + ("Sum", "Sum"), + ("Diminishing_returns", "Diminishing Returns"), + ("Increasing_returns", "Increasing Returns"), + ], + help_text="The rule this group uses.", + max_length=100, + null=True, + verbose_name="rule type", + ), + ), + migrations.AlterField( + model_name="group", + name="rule_val", + field=models.PositiveIntegerField( + blank=True, + help_text="An optional value that the group's rule choices might carry.", + null=True, + verbose_name="rule value", + ), + ), + migrations.AlterField( + model_name="provider", + name="custom_args", + field=models.CharField( + blank=True, + help_text="Custom args as Base64VecU8.", + null=True, + verbose_name="custom args", + ), + ), + ] diff --git a/nadabot/migrations/__init__.py b/nadabot/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/nadabot/models.py b/nadabot/models.py new file mode 100644 index 0000000..ee21794 --- /dev/null +++ b/nadabot/models.py @@ -0,0 +1,280 @@ +from django.db import models +from django.utils.translation import gettext_lazy as _ + +from accounts.models import Account + + +class ProviderStatus(models.TextChoices): + PENDING = "Pending", "Pending" + ACTIVE = "Active", "Active" + DEACTIVATED = "Deactivated", "Deactivated" + + +class RuleType(models.TextChoices): + HIGHEST = 'Highest' + LOWEST = 'Lowest' + SUM = 'Sum' + DIMINISHING_RETURNS = 'Diminishing_returns' + INCREASING_RETURNS = 'Increasing_returns' + + + +class NadabotRegistry(models.Model): + account = models.OneToOneField( + Account, + related_name="registry_id", + on_delete=models.CASCADE, + primary_key=True, + help_text=_("Nadabot registry id."), + ) + owner = models.ForeignKey( + Account, + on_delete=models.CASCADE, + related_name="nadabot_owner_registries", + null=False, + help_text=_("Nadabot Registry owner."), + ) + default_human_threshold = models.PositiveIntegerField( + _("default human threshold"), + default=0, + help_text=_("default human threshold."), + ) + created_at = models.DateTimeField( + _("created at"), + null=False, + help_text=_("Registry creation date."), + ) + updated_at = models.DateTimeField( + _("updated at"), + help_text=_("Registry last update date."), + ) + admins = models.ManyToManyField( + Account, + related_name="nadabot_admin_registries", + help_text=_("registry admins."), + ) + blacklisted_accounts = models.ManyToManyField( + Account, + related_name="registry_blacklisted_in", + help_text=_("registry blacklisted accounts."), + ) + source_metadata = models.JSONField( + _("source metadata"), + null=False, + help_text=_("nadabot registry source metadata."), + ) + + +class BlackList(models.Model): + registry = models.ForeignKey( + NadabotRegistry, + on_delete=models.CASCADE, + related_name="blacklists", + verbose_name=_("registry"), + help_text=_("blacklist entries by this registry") + ) + account = models.ForeignKey( + Account, + on_delete=models.CASCADE, + related_name="registries_blacklisted_from", + null=False, + help_text=_("Nadabot Registry Blacklisted from."), + ) + reason = models.TextField( + _("blacklist reason"), + blank=True, + null=True, + help_text=_("Reason account is blacklisted") + ) + date_blacklisted = models.DateTimeField( + _("blacklisted on"), + null=False, + help_text=_("Blacklist Entry Date."), + ) + + class Meta: + unique_together = ['registry', 'account'] + +class Provider(models.Model): + id = models.AutoField( + _("provider id"), + primary_key=True, + help_text=_("Provider id.") + ) + on_chain_id = models.IntegerField( + _("contract provider id"), + null=False, + help_text=_("Provider id in contract"), + ) + contract = models.ForeignKey( + Account, + on_delete=models.CASCADE, + related_name="provider_instances", + verbose_name=_("contract ID"), + max_length=100, + null=False, + help_text=_("Contract ID of the external contract that is the source of this provider.") + ) + method_name = models.CharField( + _("method name"), + max_length=100, + null=False, + help_text=_("Method name of the external contract that is the source of this provider.") + ) + name = models.CharField( + _("provider name"), + max_length=64, + null=False, + help_text=_("Name of the provider, e.g. 'I Am Human'.") + ) + description = models.TextField( + _("description"), + blank=True, + null=True, + help_text=_("Description of the provider.") + ) + status = models.CharField( + _("status"), + max_length=20, + choices=ProviderStatus, + null=False, + db_index=True, + help_text=_("Status of the provider.") + ) + admin_notes = models.TextField( + _("admin notes"), + blank=True, + null=True, + help_text=_("Admin notes, e.g. reason for flagging or marking inactive.") + ) + default_weight = models.PositiveIntegerField( + _("default weight"), + null=False, + help_text=_("Default weight for this provider, e.g. 100.") + ) + gas = models.BigIntegerField( + _("gas"), + blank=True, + null=True, + help_text=_("Custom gas amount required.") + ) + tags = models.JSONField( + _("tags"), + blank=True, + null=True, + help_text=_("Optional tags.") + ) + icon_url = models.URLField( + _("icon URL"), + blank=True, + null=True, + help_text=_("Optional icon URL.") + ) + external_url = models.URLField( + _("external URL"), + blank=True, + null=True, + help_text=_("Optional external URL.") + ) + submitted_by = models.ForeignKey( + Account, + on_delete=models.CASCADE, + related_name="providers_submitted", + verbose_name=_("submitted by"), + max_length=100, + null=False, + help_text=_("User who submitted this provider.") + ) + submitted_at = models.DateTimeField( + _("submitted at (milliseconds)"), + null=False, + db_index=True, + help_text=_("Timestamp of when this provider was submitted.") + ) + stamp_validity_ms = models.BigIntegerField( + _("stamp validity"), + blank=True, + null=True, + db_index=True, + help_text=_("Milliseconds that stamps from this provider are valid for before they expire.") + ) + account_id_arg_name = models.CharField( + _("account ID argument name"), + max_length=100, + null=False, + help_text=_("Name of account ID argument, e.g. 'account_id' or 'accountId' or 'account'.") + ) + custom_args = models.CharField( + _("custom args"), + null=True, + blank=True, + help_text=_("Custom args as Base64VecU8.") + ) + registry = models.ForeignKey( + NadabotRegistry, + on_delete=models.CASCADE, + related_name="providers", + verbose_name=_("registry"), + help_text=_("registry under which provider was registered") + ) + +class Stamp(models.Model): + user = models.ForeignKey( + Account, + on_delete=models.CASCADE, + related_name="stamps", + verbose_name=_("user"), + help_text=_("The user who earned the stamp.") + ) + provider = models.ForeignKey( + Provider, + on_delete=models.CASCADE, + related_name="stamps", + verbose_name=_("provider"), + help_text=_("The provider the user verified with.") + ) + verified_at = models.DateField( + _("verification date"), + help_text=_("The date of verification.") + ) + +class Group(models.Model): + id = models.PositiveIntegerField( + _("group id"), + primary_key=True, + help_text=_("Group id."), + ) + name = models.CharField( + _("group name"), + max_length=100, + null=False, + help_text=_("name given to the group") + ) + rule_type = models.CharField( + _("rule type"), + choices=RuleType, + max_length=100, + null=True, + blank=True, + help_text=_("The rule this group uses.") + ) + rule_val = models.PositiveIntegerField( + _("rule value"), + null=True, + blank=True, + help_text=_("An optional value that the group's rule choices might carry."), + ) + providers = models.ManyToManyField( + Provider, + related_name="groups", + help_text=_("group providers."), + ) + created_at = models.DateTimeField( + _("created at"), + null=False, + help_text=_("Group creation date."), + ) + updated_at = models.DateTimeField( + _("updated at"), + help_text=_("Group last update date."), + ) diff --git a/nadabot/serializers.py b/nadabot/serializers.py new file mode 100644 index 0000000..dc76f63 --- /dev/null +++ b/nadabot/serializers.py @@ -0,0 +1,15 @@ +from rest_framework.serializers import ModelSerializer + +from .models import NadabotRegistry, Provider, Stamp + + +class NadabotSerializer(ModelSerializer): + class Meta: + model = NadabotRegistry + fields = "__all__" # TODO: potentially adjust this e.g. for formatting of datetimes, adding convenience fields etc + + +class ProviderSerializer(ModelSerializer): + class Meta: + model = Provider + fields = "__all__" # TODO: potentially adjust this e.g. for formatting of datetimes, adding convenience fields etc diff --git a/nadabot/tests.py b/nadabot/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/nadabot/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/nadabot/utils.py b/nadabot/utils.py new file mode 100644 index 0000000..0aaa7a8 --- /dev/null +++ b/nadabot/utils.py @@ -0,0 +1,16 @@ +import re + +from django.conf import settings + +BASE_PATTERN = ( + r"nadabot\.testnet" + if settings.ENVIRONMENT == "testnet" +else r"v\d+(?:new)?\.[a-zA-Z]+\.nadabot\.near" +) + + +def match_nadabot_registry_pattern(receiver): + """Matches nadabot subaccounts for registry.""" + pattern = f"^{BASE_PATTERN}$" + print(F"the TLA {pattern}, {receiver}") + return bool(re.match(pattern, receiver)) diff --git a/nadabot/views.py b/nadabot/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/nadabot/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/pots/admin.py b/pots/admin.py index aca414b..ba9c0c1 100644 --- a/pots/admin.py +++ b/pots/admin.py @@ -22,7 +22,11 @@ class Meta: def __init__(self, *args, **kwargs): super(PotFactoryForm, self).__init__(*args, **kwargs) # Ensure self.instance is available before accessing it - if self.instance.pk: + if ( + self.instance.pk + and "admins" in self.fields + and "whitelisted_deployers" in self.fields + ): # Set the queryset for the admins field to only include relevant accounts self.fields["admins"].queryset = self.instance.admins.all() # Set the queryset for the whitelisted_deployers field to only include relevant accounts @@ -34,26 +38,29 @@ def __init__(self, *args, **kwargs): @admin.register(PotFactory) class PotFactoryAdmin(admin.ModelAdmin): form = PotFactoryForm - list_display = ("id", "owner", "deployed_at") - search_fields = ("id", "owner__id") + list_display = ("account", "owner", "deployed_at") + search_fields = ("account", "owner__id") def get_form(self, request, obj=None, **kwargs): form = super(PotFactoryAdmin, self).get_form(request, obj, **kwargs) if obj: - form.base_fields["admins"].queryset = obj.admins.all() - form.base_fields["whitelisted_deployers"].queryset = ( - obj.whitelisted_deployers.all() - ) + try: + form.base_fields["admins"].queryset = obj.admins.all() + form.base_fields["whitelisted_deployers"].queryset = ( + obj.whitelisted_deployers.all() + ) + except KeyError: + pass return form - def has_add_permission(self, request): - return False + # def has_add_permission(self, request): + # return False - def has_change_permission(self, request, obj=None): - return False + # def has_change_permission(self, request, obj=None): + # return False - def has_delete_permission(self, request, obj=None): - return False + # def has_delete_permission(self, request, obj=None): + # return False class PotForm(forms.ModelForm): @@ -64,7 +71,7 @@ class Meta: def __init__(self, *args, **kwargs): super(PotForm, self).__init__(*args, **kwargs) # Ensure self.instance is available before accessing it - if self.instance.pk: + if self.instance.pk and "admins" in self.fields: # Set the queryset for the admins field to only include relevant accounts self.fields["admins"].queryset = self.instance.admins.all() @@ -72,47 +79,84 @@ def __init__(self, *args, **kwargs): @admin.register(Pot) class PotAdmin(admin.ModelAdmin): form = PotForm - list_display = ("id", "pot_factory", "deployer", "deployed_at", "name") - search_fields = ("id", "name", "deployer__id") + list_display = ("account", "pot_factory", "deployer", "deployed_at", "name") + search_fields = ("account", "name", "deployer__id") list_filter = ("deployed_at",) def get_form(self, request, obj=None, **kwargs): form = super(PotAdmin, self).get_form(request, obj, **kwargs) if obj: - form.base_fields["admins"].queryset = obj.admins.all() + try: + form.base_fields["admins"].queryset = obj.admins.all() + except KeyError: + pass return form - def has_add_permission(self, request): - return False + # def has_add_permission(self, request): + # return False - def has_change_permission(self, request, obj=None): - return False + # def has_change_permission(self, request, obj=None): + # return False - def has_delete_permission(self, request, obj=None): - return False + # def has_delete_permission(self, request, obj=None): + # return False + + +class PotApplicationAdminForm(forms.ModelForm): + class Meta: + model = PotApplication + fields = "__all__" + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["applicant"].widget.attrs.update( + {"data-placeholder": "Search by applicant ID..."} + ) @admin.register(PotApplication) class PotApplicationAdmin(admin.ModelAdmin): + form = PotApplicationAdminForm list_display = ("id", "pot", "applicant", "status", "submitted_at") - search_fields = ("pot__id", "applicant__id") + search_fields = ("pot__account", "applicant__id") list_filter = ("status", "submitted_at") + autocomplete_fields = ["applicant"] - def has_add_permission(self, request): - return False + # def get_search_results(self, request, queryset, search_term): + # queryset, use_distinct = super().get_search_results( + # request, queryset, search_term + # ) + # try: + # queryset |= self.model.objects.filter(applicant__id__icontains=search_term) + # except ValueError: + # pass + # return queryset, use_distinct - def has_change_permission(self, request, obj=None): - return False + # def get_queryset(self, request): + # qs = super().get_queryset(request) + # qs = qs.select_related("applicant") + # return qs - def has_delete_permission(self, request, obj=None): - return False + # def get_label(self, obj): + # return f"{obj.applicant.id} - {obj.pot}" + + # get_label.short_description = "Application" + + # def has_add_permission(self, request): + # return False + + # def has_change_permission(self, request, obj=None): + # return False + + # def has_delete_permission(self, request, obj=None): + # return False @admin.register(PotApplicationReview) class PotApplicationReviewAdmin(admin.ModelAdmin): list_display = ( "id", - "application", + "application_applicant_id", # Use the custom method here "reviewer", "notes", "status", @@ -121,21 +165,30 @@ class PotApplicationReviewAdmin(admin.ModelAdmin): ) search_fields = ("application__id", "reviewer__id") list_filter = ("status", "reviewed_at") + autocomplete_fields = [ + "application", + "reviewer", + ] # Enable autocomplete for the application field - def has_add_permission(self, request): - return False + def application_applicant_id(self, obj): + return obj.application.applicant.id - def has_change_permission(self, request, obj=None): - return False + application_applicant_id.short_description = "Application Applicant ID" - def has_delete_permission(self, request, obj=None): - return False + # def has_add_permission(self, request): + # return False + + # def has_change_permission(self, request, obj=None): + # return False + + # def has_delete_permission(self, request, obj=None): + # return False @admin.register(PotPayout) class PotPayoutAdmin(admin.ModelAdmin): - list_display = ("id", "pot", "recipient", "amount", "paid_at") - search_fields = ("pot__id", "recipient__id") + list_display = ("id", "pot", "recipient", "amount", "amount_paid_usd", "paid_at") + search_fields = ("pot__account", "recipient__id") list_filter = ("paid_at",) def has_add_permission(self, request): @@ -150,8 +203,8 @@ def has_delete_permission(self, request, obj=None): @admin.register(PotPayoutChallenge) class PotPayoutChallengeAdmin(admin.ModelAdmin): - list_display = ("id", "challenger", "pot", "created_at") - search_fields = ("challenger__id", "pot__id") + list_display = ("id", "challenger", "pot", "message", "created_at") + search_fields = ("challenger__id", "pot__account") list_filter = ("created_at",) def has_add_permission(self, request): @@ -166,8 +219,8 @@ def has_delete_permission(self, request, obj=None): @admin.register(PotPayoutChallengeAdminResponse) class PotPayoutChallengeAdminResponseAdmin(admin.ModelAdmin): - list_display = ("id", "pot", "admin", "created_at", "resolved") - search_fields = ("admin__id", "challenge__id") + list_display = ("id", "pot", "admin", "message", "created_at", "resolved") + search_fields = ("admin__id", "challenger__id") list_filter = ("created_at", "resolved") def has_add_permission(self, request): diff --git a/pots/api.py b/pots/api.py index a568d4d..093ea4e 100644 --- a/pots/api.py +++ b/pots/api.py @@ -1,80 +1,537 @@ +import os +from django.conf import settings from django.db.models import Q from django.utils import timezone from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_page -from rest_framework.pagination import LimitOffsetPagination +from drf_spectacular.utils import ( + OpenApiExample, + OpenApiParameter, + OpenApiResponse, + extend_schema, +) from rest_framework.request import Request from rest_framework.response import Response from rest_framework.views import APIView +import json +import requests +from django.core.cache import cache +from django.utils.functional import cached_property from accounts.models import Account -from accounts.serializers import AccountSerializer +from accounts.serializers import ( + PAGINATED_ACCOUNT_EXAMPLE, + AccountSerializer, + PaginatedAccountsResponseSerializer, +) +from api.pagination import pagination_parameters +from api.pagination import CustomSizePageNumberPagination from donations.models import Donation -from donations.serializers import DonationSerializer +from donations.serializers import ( + PAGINATED_DONATION_EXAMPLE, + DonationSerializer, + PaginatedDonationsResponseSerializer, +) +from .models import Pot, PotApplication, PotApplicationStatus, PotFactory +from .serializers import ( + PAGINATED_MPDAO_USER_EXAMPLE, + PAGINATED_PAYOUT_EXAMPLE, + PAGINATED_POT_APPLICATION_EXAMPLE, + PAGINATED_POT_EXAMPLE, + PAGINATED_POT_FACTORY_EXAMPLE, + SIMPLE_MPDAO_VOTER_INFO_EXAMPLE, + SIMPLE_POT_EXAMPLE, + MpdaoVoterItemSerializer, + PaginatedMpdaoUsersSerializer, + PaginatedPotApplicationsResponseSerializer, + PaginatedPotFactoriesResponseSerializer, + PaginatedPotPayoutsResponseSerializer, + PaginatedPotsResponseSerializer, + PotApplicationSerializer, + PotFactorySerializer, + PotPayoutSerializer, + PotSerializer, + MpdaoSnapshotSerializer, +) -from .models import Pot, PotApplication, PotApplicationStatus -from .serializers import PotApplicationSerializer, PotPayoutSerializer, PotSerializer +class PotsListAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedPotsResponseSerializer, + description="Returns a paginated list of pots", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for pots", + value=PAGINATED_POT_EXAMPLE, + response_only=True, + ), + ], + ), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + pots = Pot.objects.select_related('account', 'pot_factory', 'deployer', 'owner', 'chef').prefetch_related('admins').all() + results = self.paginate_queryset(pots, request, view=self) + serializer = PotSerializer(results, many=True) + return self.get_paginated_response(serializer.data) -class PotsAPI(APIView, LimitOffsetPagination): - def dispatch(self, request, *args, **kwargs): - return super(PotsAPI, self).dispatch(request, *args, **kwargs) - @method_decorator(cache_page(60 * 15)) # Cache for 15 mins +class PotFactoriesAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedPotFactoriesResponseSerializer, + description="Returns a paginated list of pot factories", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for pot factories", + value=PAGINATED_POT_FACTORY_EXAMPLE, + response_only=True, + ), + ], + ), + }, + ) + @method_decorator(cache_page(60 * 5)) def get(self, request: Request, *args, **kwargs): - pot_id = kwargs.get("pot_id", None) - action = kwargs.get("action", None) - if pot_id: - # Request pertaining to a specific pot_id - try: - pot = Pot.objects.get(id=pot_id) - except Pot.DoesNotExist: + pot_factories = PotFactory.objects.all() + results = self.paginate_queryset(pot_factories, request, view=self) + serializer = PotFactorySerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class PotDetailAPI(APIView): + + @extend_schema( + parameters=[ + OpenApiParameter("pot_id", str, OpenApiParameter.PATH), + ], + responses={ + 200: OpenApiResponse( + response=PotSerializer, + description="Returns pot details", + examples=[ + OpenApiExample( + "example-1", + summary="Simple pot example", + description="Example response for pot detail", + value=SIMPLE_POT_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Pot not found"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + pot_id = kwargs.get("pot_id") + try: + pot = Pot.objects.get(account=pot_id) + except Pot.DoesNotExist: + return Response({"message": f"Pot with ID {pot_id} not found."}, status=404) + serializer = PotSerializer(pot) + return Response(serializer.data) + + +class PotApplicationsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("pot_id", str, OpenApiParameter.PATH), + OpenApiParameter( + "status", + str, + OpenApiParameter.QUERY, + required=False, + description="Filter by application status", + ), + OpenApiParameter( + "search", + str, + OpenApiParameter.QUERY, + required=False, + description="Search by applicant name or account ID", + ), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedPotApplicationsResponseSerializer, + description="Returns applications for the pot", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for pot applications", + value=PAGINATED_POT_APPLICATION_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Pot not found"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + pot_id = kwargs.get("pot_id") + try: + pot = Pot.objects.get(account=pot_id) + except Pot.DoesNotExist: + return Response({"message": f"Pot with ID {pot_id} not found."}, status=404) + + applications = pot.applications.all() + + search_param = request.query_params.get("search") + if search_param: + applications = applications.filter( + Q(applicant__id__icontains=search_param) | + Q(applicant__near_social_profile_data__name__icontains=search_param) + ) + + # Handle status filter + status_param = request.query_params.get("status") + if status_param: + if status_param not in PotApplicationStatus.values: return Response( - {"message": f"Pot with ID {pot_id} not found."}, status=404 + {"message": f"Invalid status value: {status_param}"}, status=400 ) - if action: - # Handle action if present; only valid option currently is "applications" - if action == "applications": - # Return applications for pot_id - applications = pot.applications.all() - results = self.paginate_queryset(applications, request, view=self) - serializer = PotApplicationSerializer(results, many=True) - return self.get_paginated_response(serializer.data) - elif action == "donations": - # Return donations for pot_id - donations = pot.donations.all() - results = self.paginate_queryset(donations, request, view=self) - serializer = DonationSerializer(results, many=True) - return self.get_paginated_response(serializer.data) - elif action == "sponsors": - # Return sponsors for pot_id - sponsor_ids = ( - Donation.objects.filter(pot=pot, matching_pool=True) - .values_list("donor", flat=True) - .distinct() - ) - sponsors = Account.objects.filter(id__in=sponsor_ids) - results = self.paginate_queryset(sponsors, request, view=self) - serializer = AccountSerializer(results, many=True) - return self.get_paginated_response(serializer.data) - elif action == "payouts": - # Return payouts for pot_id - payouts = pot.payouts.all() - results = self.paginate_queryset(payouts, request, view=self) - serializer = PotPayoutSerializer(results, many=True) - return self.get_paginated_response(serializer.data) - else: - return Response( - {"error": f"Invalid action: {action}"}, - status=400, + applications = applications.filter(status=status_param) + + results = self.paginate_queryset(applications, request, view=self) + serializer = PotApplicationSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class PotDonationsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("pot_id", str, OpenApiParameter.PATH), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedDonationsResponseSerializer, + description="Returns donations for the pot", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for donations", + value=PAGINATED_DONATION_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Pot not found"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + pot_id = kwargs.get("pot_id") + try: + pot = Pot.objects.get(account=pot_id) + except Pot.DoesNotExist: + return Response({"message": f"Pot with ID {pot_id} not found."}, status=404) + + donations = pot.donations.select_related("donor", "token", 'pot', 'pot__deployer', 'pot__owner', 'pot__chef', 'recipient', 'referrer', 'chef').prefetch_related('pot__admins').all() + results = self.paginate_queryset(donations, request, view=self) + serializer = DonationSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class PotSponsorsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("pot_id", str, OpenApiParameter.PATH), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedAccountsResponseSerializer, + description="Returns sponsors for the pot", + examples=[ + OpenApiExample( + "example-1", + summary="user.near", + description="Example response for sponsors", + value=PAGINATED_ACCOUNT_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Pot not found"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + pot_id = kwargs.get("pot_id") + try: + pot = Pot.objects.get(account=pot_id) + except Pot.DoesNotExist: + return Response({"message": f"Pot with ID {pot_id} not found."}, status=404) + + sponsor_ids = ( + Donation.objects.filter(pot=pot, matching_pool=True) + .values_list("donor", flat=True) + .distinct() + ) + sponsors = Account.objects.filter(id__in=sponsor_ids) + results = self.paginate_queryset(sponsors, request, view=self) + serializer = AccountSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class PotPayoutsAPI(APIView, CustomSizePageNumberPagination): + + @extend_schema( + parameters=[ + OpenApiParameter("pot_id", str, OpenApiParameter.PATH), + OpenApiParameter( + "search", + str, + OpenApiParameter.QUERY, + required=False, + description="Search by recipient name or account ID", + ), + *pagination_parameters, + ], + responses={ + 200: OpenApiResponse( + response=PaginatedPotPayoutsResponseSerializer, + description="Returns payouts for the pot", + examples=[ + OpenApiExample( + "example-1", + summary="Simple example", + description="Example response for payouts", + value=PAGINATED_PAYOUT_EXAMPLE, + response_only=True, + ), + ], + ), + 404: OpenApiResponse(description="Pot not found"), + }, + ) + @method_decorator(cache_page(60 * 5)) + def get(self, request: Request, *args, **kwargs): + pot_id = kwargs.get("pot_id") + try: + pot = Pot.objects.get(account=pot_id) + except Pot.DoesNotExist: + return Response({"message": f"Pot with ID {pot_id} not found."}, status=404) + + payouts = pot.payouts.all() + + search_param = request.query_params.get("search") + if search_param: + payouts = payouts.filter( + Q(recipient__id__icontains=search_param) | + Q(recipient__near_social_profile_data__name__icontains=search_param) + ) + + results = self.paginate_queryset(payouts, request, view=self) + serializer = PotPayoutSerializer(results, many=True) + return self.get_paginated_response(serializer.data) + + +class MpdaoVoterMixin: + @cached_property + def all_voters(self): + """Cache the JSON file in memory""" + json_path = os.path.join(settings.BASE_DIR, 'pots', 'last-snapshot-AllVoters.json') + with open(json_path, 'r') as file: + return json.load(file) + + def get_unique_voters(self): + """Get and cache the unique voters from RPC""" + cache_key = 'mpdao_unique_voters' + cached_voters = cache.get(cache_key) + + if cached_voters is not None: + return cached_voters + + url = "https://rpc.web4.near.page/account/mpdao.vote.potlock.near/view/get_unique_voters?election_id.json=1" + response = requests.get(url) + + if response.status_code != 200: + raise Exception("Error fetching voters from contract") + + unique_voters = response.json() + cache.set(cache_key, unique_voters, 86400) + return unique_voters + + def get_bulk_account_data(self, voter_ids): + """Get account data for multiple voters in one query""" + accounts = { + account.id: AccountSerializer(account).data + for account in Account.objects.filter(id__in=voter_ids) + } + return accounts + + def get_voter_data(self, voter_id): + """Get voter data from cached JSON""" + return next( + (voter for voter in self.all_voters if voter['voter_id'] == voter_id), + None + ) + + +class MpdaoVotersListAPI(MpdaoVoterMixin, APIView): + DEFAULT_PAGE_SIZE = 30 + + @extend_schema( + parameters=[ + OpenApiParameter("page", int, OpenApiParameter.QUERY, required=False, description="Page number (starts from 1)"), + OpenApiParameter("page_size", int, OpenApiParameter.QUERY, required=False, description="Number of items per page (default: 30)"), + ], + responses={ + 200: OpenApiResponse( + response=PaginatedMpdaoUsersSerializer, + description="Returns paginated list of all voters for mpdao round", + examples=[ + OpenApiExample( + "mpdao-list-example", + summary="Paginated voters list", + description="Example response for mpdao voters list", + value=PAGINATED_MPDAO_USER_EXAMPLE, + ), + ], + ), + 500: OpenApiResponse(description="Error fetching voters"), + }, + ) + @method_decorator(cache_page(86400)) + def get(self, request: Request, *args, **kwargs): + try: + return self.get_all_voters(request.query_params) + except Exception as e: + return Response( + {"message": f"Error processing voter data: {str(e)}"}, + status=500 + ) + + def get_all_voters(self, query_params): + """Handle request for all voters with pagination""" + try: + unique_voters = self.get_unique_voters() + + try: + page = max(int(query_params.get('page', 1)), 1) + page_size = min(int(query_params.get('page_size', self.DEFAULT_PAGE_SIZE)), 170) + except ValueError: + page = 1 + page_size = self.DEFAULT_PAGE_SIZE + + # Calculate pagination slices + start_idx = (page - 1) * page_size + end_idx = start_idx + page_size + + # Get paginated voters + paginated_voters = unique_voters[start_idx:end_idx] + + # Get all account data for the page in one query + accounts = self.get_bulk_account_data(paginated_voters) + + voters_data = [] + for voter_id in paginated_voters: + voter_data = self.get_voter_data(voter_id) + account_data = accounts.get(voter_id) + + voters_data.append({ + "voter_id": voter_id, + "account_data": account_data, + "voter_data": MpdaoSnapshotSerializer(voter_data or {"voter_id": voter_id}).data + }) + + base_url = self.request.build_absolute_uri().split('?')[0] + + next_url = None + if end_idx < len(unique_voters): + next_params = query_params.copy() + next_params['page'] = page + 1 + next_params['page_size'] = page_size + next_url = f"{base_url}?{'&'.join(f'{k}={v}' for k, v in next_params.items())}" + + previous_url = None + if page > 1: + prev_params = query_params.copy() + prev_params['page'] = page - 1 + prev_params['page_size'] = page_size + previous_url = f"{base_url}?{'&'.join(f'{k}={v}' for k, v in prev_params.items())}" + + response_data = { + "count": len(paginated_voters), + "next": next_url, + "previous": previous_url, + "results": voters_data + } + + return Response(response_data) + + except Exception as e: + return Response( + {"message": f"Error fetching voters: {str(e)}"}, + status=500 + ) + + +class MpdaoVoterDetailAPI(MpdaoVoterMixin, APIView): + @extend_schema( + parameters=[ + OpenApiParameter("voter_id", str, OpenApiParameter.PATH, required=True, description="account ID of the voter"), + ], + responses={ + 200: OpenApiResponse( + response=MpdaoVoterItemSerializer, + description="Returns details for a specific voter", + examples=[ + OpenApiExample( + "mpdao-voter-example", + summary="Specific voter details", + description="Example response for single voter info", + value=SIMPLE_MPDAO_VOTER_INFO_EXAMPLE ) - else: - # Return pot - serializer = PotSerializer(pot) - return Response(serializer.data) - else: - # Return all pots - pots = Pot.objects.all() - results = self.paginate_queryset(pots, request, view=self) - serializer = PotSerializer(results, many=True) - return self.get_paginated_response(serializer.data) + ] + ), + 404: OpenApiResponse(description="Voter not found"), + 500: OpenApiResponse(description="Error fetching voter data"), + }, + ) + @method_decorator(cache_page(86400)) + def get(self, request: Request, voter_id: str, *args, **kwargs): + try: + voter_data = self.get_voter_data(voter_id) + + account_data = self.get_bulk_account_data([voter_id]) + + response_data = { + "voter_id": voter_id, + "account_data": account_data, + "voter_data": MpdaoSnapshotSerializer(voter_data or {"voter_id": voter_id}).data + } + + return Response(response_data) + except Exception as e: + return Response( + {"message": f"Error processing voter data: {str(e)}"}, + status=500 + ) + \ No newline at end of file diff --git a/pots/last-snapshot-AllVoters.json b/pots/last-snapshot-AllVoters.json new file mode 100644 index 0000000..e3fa94c --- /dev/null +++ b/pots/last-snapshot-AllVoters.json @@ -0,0 +1 @@ +[{"voter_id":"lucascasp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1447929400","locking_period":300,"voting_power":"7239647000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"7239647000000000000000000000"}]},{"voter_id":"voodooking.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2942789600","locking_period":300,"voting_power":"14713948000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"14713948000000000000000000000"}]},{"voter_id":"kuncho.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000","locking_period":30,"voting_power":"500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"128492199000","locking_period":45,"voting_power":"96369149250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"4153676790","locking_period":300,"voting_power":"20768383950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"96369000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20769033200000000000000000000"}]},{"voter_id":"silkking.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"250000000000","locking_period":240,"voting_power":"1000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"3500000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"79200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"917300000000000000000000000000"}]},{"voter_id":"1ce2567f7f49cb34cea72179223ec7fc4ba91077da3e01364d0c729dfbe26467","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7053707400","locking_period":300,"voting_power":"35268537000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"35268537000000000000000000000"}]},{"voter_id":"proxima-centauri.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"177979300210","locking_period":300,"voting_power":"889896501050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"889896501000000000000000000000"}]},{"voter_id":"blazepassion.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10000000000","locking_period":300,"voting_power":"50000000000000000000000000000","unlocking_started_at":1718642103735,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"alpha-centauri.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"191594836990","locking_period":300,"voting_power":"957974184950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"957974184900000000000000000000"}]},{"voter_id":"0cbf1c4a3da03524dfd9486cf13d404e5f02eb173218d2a512d6991c057fddd3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"20064518690","locking_period":300,"voting_power":"100322593450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"100322593400000000000000000000"}]},{"voter_id":"dogon.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"260851958600","locking_period":300,"voting_power":"1304259793000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"1304259793000000000000000000000"}]},{"voter_id":"alan777.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"286666722000","locking_period":300,"voting_power":"1433333610000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"100000000","locking_period":150,"voting_power":"250000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"10000000","locking_period":180,"voting_power":"30000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"250000000000","locking_period":240,"voting_power":"1000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"2433613610000000000000000000000"}]},{"voter_id":"manzanal.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"594801155900","locking_period":300,"voting_power":"2974005779500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"15000000000","locking_period":300,"voting_power":"75000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"builddao.poolv1.near","voting_power":"1500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"1541005779500000000000000000000"}]},{"voter_id":"brianmai.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8005634731000","locking_period":240,"voting_power":"32022538924000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"chain0ps.poolv1.near","voting_power":"32022538924000000000000000000000"}]},{"voter_id":"raulb.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"86710598600","locking_period":300,"voting_power":"433552993000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"433552993000000000000000000000"}]},{"voter_id":"platoboss.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5512744200","locking_period":90,"voting_power":"8269116300000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"500000000","locking_period":300,"voting_power":"2500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10769116300000000000000000000","vote_positions":[]},{"voter_id":"cryptogarik.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7822408800","locking_period":300,"voting_power":"39112044000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"cryptogarik.poolv1.near","voting_power":"39112044000000000000000000000"}]},{"voter_id":"zaphire.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"102709473200","locking_period":300,"voting_power":"513547366000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"swissstar.poolv1.near","voting_power":"513547366000000000000000000000"}]},{"voter_id":"f27af9b6ebfa3896bdcaa20514370f12c849f0e9ead55623fb82c11430b0c2ad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"20000000","locking_period":30,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"dexagon.poolv1.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"58f54b94dae828ebbafeccebfba61c5ff4773a4f1c1b077d6628a64c1a0af742","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"287889851090","locking_period":300,"voting_power":"1439449255450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"59598407900","locking_period":30,"voting_power":"29799203950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"swissstar.poolv1.near","voting_power":"1469248459400000000000000000000"}]},{"voter_id":"6b16e9e129ce06246c42a33f0d225e3d4735c2de26701f21de28276970e601c0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"232967556300","locking_period":90,"voting_power":"349451334450000000000000000000","unlocking_started_at":1728034878253,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"herimax.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"15850679740","locking_period":300,"voting_power":"79253398700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"79253398700000000000000000000"}]},{"voter_id":"0234hoangnd78439.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"735830030","locking_period":300,"voting_power":"3679150150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"meteor.poolv1.near","voting_power":"3679150100000000000000000000"}]},{"voter_id":"readylayerone.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1345707734600","locking_period":300,"voting_power":"6728538673000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"6728538673000000000000000000000"}]},{"voter_id":"duongka.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3880961200","locking_period":120,"voting_power":"7761922400000000000000000000","unlocking_started_at":1733562339384,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"c245be41fb5aed65ab30e7b4e1a178147e1e131dc95b1f2206b2f53a7596f093","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"69908270","locking_period":300,"voting_power":"349541350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"349541350000000000000000000","vote_positions":[]},{"voter_id":"themicrowave.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"37095762100","locking_period":300,"voting_power":"185478810500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"3736000000","locking_period":300,"voting_power":"18680000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"204158810500000000000000000000"}]},{"voter_id":"e914e4c91d80a845c79bb134d54fafb01bab9357fa44c3b4c38dffb3f0e5cad1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"34123968100","locking_period":300,"voting_power":"170619840500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"175892000","locking_period":90,"voting_power":"263838000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"1529750100","locking_period":165,"voting_power":"4206812775000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"717246800","locking_period":120,"voting_power":"1434493600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"75000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"76524984800000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"100000000000000000000000000000"}]},{"voter_id":"branermusso.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6364090500","locking_period":300,"voting_power":"31820452500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"10095459200","locking_period":300,"voting_power":"50477296000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearuaguild.poolv1.near","voting_power":"82297748500000000000000000000"}]},{"voter_id":"79148e72172096387294d56b0f2f9b366591610254a21e444a479d6adcf38dd3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"137063146500","locking_period":90,"voting_power":"205594719750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"205594719750000000000000000000","vote_positions":[]},{"voter_id":"gilberth.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"102367750","locking_period":300,"voting_power":"511838750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"511838700000000000000000000"}]},{"voter_id":"0beca730ba634786c7e330fb7c71f8510b51a445522ca728fc30f7c722eb3a14","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"15020424000","locking_period":30,"voting_power":"7510212000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7510212000000000000000000000","vote_positions":[]},{"voter_id":"hannah17.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"23554732500","locking_period":300,"voting_power":"117773662500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"117773662500000000000000000000"}]},{"voter_id":"blaze.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"24895319700","locking_period":90,"voting_power":"37342979550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"openshards.poolv1.near","voting_power":"37342979500000000000000000000"}]},{"voter_id":"do0k13.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"508091860340","locking_period":300,"voting_power":"2540459301700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"mexa-staking.poolv1.near","voting_power":"2540459301700000000000000000000"}]},{"voter_id":"akdude.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"80865985600","locking_period":300,"voting_power":"404329928000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"60000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"61298970000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"20216500000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"astro-stakers.poolv1.near","voting_power":"262814458000000000000000000000"}]},{"voter_id":"levoslov.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1126852800","locking_period":300,"voting_power":"5634264000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5634264000000000000000000000","vote_positions":[]},{"voter_id":"aiml.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2984500","locking_period":240,"voting_power":"11938000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"10529862400","locking_period":300,"voting_power":"52649312000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"52661250000000000000000000000"}]},{"voter_id":"ramgor.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"38088003700","locking_period":300,"voting_power":"190440018500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"190440018500000000000000000000"}]},{"voter_id":"zzoo-2718.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"68988508600","locking_period":180,"voting_power":"206965525800000000000000000000","unlocking_started_at":1720364226345,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"68686063500","locking_period":165,"voting_power":"188886674625000000000000000000","unlocking_started_at":1720364264076,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"ame9986.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2360529000","locking_period":300,"voting_power":"11802645000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6802645000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"openbitlab.poolv1.near","voting_power":"5000000000000000000000000000"}]},{"voter_id":"abrahamrivv.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"46917695800","locking_period":300,"voting_power":"234588479000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"234588479000000000000000000000"}]},{"voter_id":"cacossio.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"754989658520","locking_period":210,"voting_power":"2642463804820000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"201150593900","locking_period":195,"voting_power":"653739430175000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"74821994195000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearuaguild.poolv1.near","voting_power":"221381240800000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"121|mpDAO Grants #8 - August 2024-meximalist.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"118|mpDAO Grants #8 - August 2024-marcelorefi.near","voting_power":"500000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"117|mpDAO Grants #8 - August 2024-bagrera.near","voting_power":"250000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"139|mpDAO Grants #8 - August 2024-farmersleague.near","voting_power":"250000000000000000000000000000"}]},{"voter_id":"e87a0f4bbdbc251ca4531be261f7c6821facc2ad076da96a9572acca2049dfe6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"129575448900","locking_period":135,"voting_power":"291544760025000000000000000000","unlocking_started_at":1714994026232,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"skinn.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"76645554700","locking_period":300,"voting_power":"383227773500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"383227773500000000000000000000"}]},{"voter_id":"a2d1b583a0743a892255b9a07eb064d2656589df60ebeffbbcb7f4d32883662c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"172c0cab8eec92d69ba16db4e8ea5bf69149fcc3844008327bcc2c84fa203508","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"9076056900","locking_period":300,"voting_power":"45380284500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"45380284500000000000000000000"}]},{"voter_id":"border_less.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"52897311300","locking_period":300,"voting_power":"264486556500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"264486556500000000000000000000"}]},{"voter_id":"0xf48cAb01aE5b5f3A546f33B7f416E7E203237749.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"790000000","locking_period":120,"voting_power":"1580000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"80000000","locking_period":300,"voting_power":"400000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1977000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"71|mpDAO Grants #7 - June 2024-anarchychains.near","voting_power":"1000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"109|mpDAO Grants #7 - June 2024-near-africa.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"mp-cc.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"20633333330000","locking_period":225,"voting_power":"77374999987500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"28125000000000","locking_period":90,"voting_power":"42187500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"55030000000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"sharpdarts.poolv1.near","voting_power":"2000000987500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"p2p-org.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"galaxydigital.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"rekt.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staketab.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"jagon.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stardust.pool.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"openshards.poolv1.near","voting_power":"3000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stardust.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"moonlet.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"frensvalidator.poolv1.near","voting_power":"3000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fresh.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"grassets.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stablelab.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"tritonone.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"3562499000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"senseinode.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"4000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearuaguild.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dragonfly.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakesstone.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"kiln-1.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dsrvlabs-staking.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"prophet.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"d1.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearvietnamhub.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"08investinwomen_runbybisontrails.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"gfs-ventures.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"a41.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"bee1stake.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"blockdaemon.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"140|mpDAO Grants #8 - August 2024-latambuilder.near","voting_power":"50000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"150000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"134|mpDAO Grants #8 - August 2024-marcrypted.near","voting_power":"560000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"1500000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"123|mpDAO Grants #8 - August 2024-palomaetienne.near","voting_power":"400000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"128|mpDAO Grants #8 - August 2024-aleiranova.near","voting_power":"1250000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"225000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"137|mpDAO Grants #8 - August 2024-criptolaplata.near","voting_power":"300000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"139|mpDAO Grants #8 - August 2024-farmersleague.near","voting_power":"335000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"142|mpDAO Grants #8 - August 2024-refibogota.near","voting_power":"200000000000000000000000000000"}]},{"voter_id":"mbbevilacqua_caffepoesia.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"536000000","locking_period":300,"voting_power":"2680000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"1729000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"123|mpDAO Grants #8 - August 2024-palomaetienne.near","voting_power":"931000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"2be59bfa20787b81b8ffa9a6a6c45714020e2e157dbc1c5636287ca91ebc1aee","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"yaneisia.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"901208400","locking_period":300,"voting_power":"4506042000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"120245800","locking_period":300,"voting_power":"601229000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"335994910","locking_period":300,"voting_power":"1679974550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"cryptoblossom.poolv1.near","voting_power":"6787245500000000000000000000"}]},{"voter_id":"8901ad3c104f92dba61c1624b74285a481fdc93670f7e307d27512bcf6f83e4b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3751efa63c92312d2324dc19f26c6ec15c869b72d39ef5c852e69067dca585da","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"775000000","locking_period":90,"voting_power":"1162500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"8963000000","locking_period":300,"voting_power":"44815000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"15977500000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"14000000000000000000000000"}]},{"voter_id":"travbori.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"36093446400","locking_period":90,"voting_power":"54140169600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1791481030","locking_period":300,"voting_power":"8957405150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"63097574700000000000000000000"}]},{"voter_id":"shadowmonarch.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"32406418600","locking_period":300,"voting_power":"162032093000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"162032093000000000000000000000"}]},{"voter_id":"luciotato.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"17740840948500","locking_period":90,"voting_power":"26611261422750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"100000000000","locking_period":180,"voting_power":"300000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"40000000000000","locking_period":30,"voting_power":"20000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"35000000000000","locking_period":60,"voting_power":"35000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"64986261422750000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"550000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"2180000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearstar.poolv1.near","voting_power":"1850000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"2980000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"openshards.poolv1.near","voting_power":"1485000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"deutschetelekom.poolv1.near","voting_power":"850000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"480000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"800000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearkoreahub.poolv1.near","voting_power":"480000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"grassets.poolv1.near","voting_power":"300000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"senseinode.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nttdata_dti.poolv1.near","voting_power":"300000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"83|mpDAO Grants #7 - June 2024-733770575b5ba41692fe56bfeadb98cf0f46492dfa608027ea6e0cc8cdf832be","voting_power":"50000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"101|mpDAO Grants #7 - June 2024-criptolaplata.near","voting_power":"1050000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"85|mpDAO Grants #7 - June 2024-fpsgames.near","voting_power":"350000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"94|mpDAO Grants #7 - June 2024-cryptopr3neur.near","voting_power":"665000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"95|mpDAO Grants #7 - June 2024-edfernandezg.near","voting_power":"45000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"111|mpDAO Grants #7 - June 2024-c0d0c8b3bfcbc17347002733be3e2d17df833d2931c425eaa40bd7e73a4509e3","voting_power":"40000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"102|mpDAO Grants #7 - June 2024-fr-grant.near","voting_power":"400000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"86|mpDAO Grants #7 - June 2024-la-incubadora.near","voting_power":"650000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"110|mpDAO Grants #7 - June 2024-a0824e3043025dbc552529f9fefcde06b5c43c0ebad5d595d1f3343153932b88","voting_power":"20000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"600000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"121|mpDAO Grants #8 - August 2024-meximalist.near","voting_power":"300000000000000000000000000000"}]},{"voter_id":"brunomazzaggio.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"251428084300","locking_period":300,"voting_power":"1257140421500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"ursamajor.poolv1.near","voting_power":"1257140421500000000000000000000"}]},{"voter_id":"c3001cd00f76dd7d4e60d4bf6c8b392fa2e724f7367b3b92279f467262f0724e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e515b46dc1c974ca39c5c622d869f7bc73e31d2c995354715a1520e18290fbac","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12355013000","locking_period":120,"voting_power":"24710026000000000000000000000","unlocking_started_at":1726266396655,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"biolmoon.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10254082300","locking_period":195,"voting_power":"33325767475000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"75000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"33325767400000000000000000000"}]},{"voter_id":"mex-holding.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"281424231200","locking_period":300,"voting_power":"1407121156000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"1407121156000000000000000000000"}]},{"voter_id":"rosaglez_art.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"500000000","locking_period":300,"voting_power":"2500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"2500000000000000000000000000"}]},{"voter_id":"adisa81.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1035323359600","locking_period":300,"voting_power":"5176616798000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"2pilot.poolv1.near","voting_power":"5176616798000000000000000000000"}]},{"voter_id":"natto.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"28715520000","locking_period":90,"voting_power":"43073280000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"770000000","locking_period":30,"voting_power":"385000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"21729000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"21729280000000000000000000000"}]},{"voter_id":"daorecords.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7059590900","locking_period":90,"voting_power":"10589386350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"5289386300000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"5300000000000000000000000000"}]},{"voter_id":"alejandro.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"28257645190","locking_period":300,"voting_power":"141288225950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"85598400500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"55689825400000000000000000000"}]},{"voter_id":"jarednotjerry.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"209997339990","locking_period":300,"voting_power":"1049986699950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"1049986699900000000000000000000"}]},{"voter_id":"wapzp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"20033551200","locking_period":300,"voting_power":"100167756000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shurik.poolv1.near","voting_power":"100167756000000000000000000000"}]},{"voter_id":"marrown.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"27459200900","locking_period":300,"voting_power":"137296004500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4500000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"63818410000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stardust.pool.near","voting_power":"73477590000000000000000000000"}]},{"voter_id":"lukelee.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1306488420000","locking_period":300,"voting_power":"6532442100000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"6532442100000000000000000000000"}]},{"voter_id":"anmatig.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"266031800","locking_period":300,"voting_power":"1330159000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"3330000000","locking_period":30,"voting_power":"1665000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"1000000","locking_period":225,"voting_power":"3750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2998909000000000000000000000"}]},{"voter_id":"neonong.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"325787524100","locking_period":300,"voting_power":"1628937620500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking-power.poolv1.near","voting_power":"1628937620500000000000000000000"}]},{"voter_id":"luismanac.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"33953313100","locking_period":300,"voting_power":"169766565500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"interstakeone.poolv1.near","voting_power":"69766000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"50000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lscmval.poolv1.near","voting_power":"50000565500000000000000000000"}]},{"voter_id":"max_one.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10627243500","locking_period":300,"voting_power":"53136217500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"2327239200","locking_period":300,"voting_power":"11636196000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"424000000","locking_period":300,"voting_power":"2120000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"449000000","locking_period":300,"voting_power":"2245000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":4,"amount":"4445212500","locking_period":300,"voting_power":"22226062500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"91363476000000000000000000000"}]},{"voter_id":"sanam1027.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1206000000","locking_period":30,"voting_power":"603000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"353000000","locking_period":90,"voting_power":"529500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"2000000","locking_period":60,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"2491108600","locking_period":45,"voting_power":"1868331450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"402831450000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"atomic-nodes.poolv1.near","voting_power":"1000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"400000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"100000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"50000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"100000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"66|mpDAO Grants #7 - June 2024-figitalclub.near","voting_power":"800000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"71|mpDAO Grants #7 - June 2024-anarchychains.near","voting_power":"100000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"65|mpDAO Grants #7 - June 2024-auroraafrica.near","voting_power":"50000000000000000000000000"}]},{"voter_id":"7b3735e6e4891b67d6949b37007000f1006c9bc50f7b2ffbc7591b84f4a41d11","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"173653480600","locking_period":120,"voting_power":"347306961200000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"infiniteloop.poolv1.near","voting_power":"347306961200000000000000000000"}]},{"voter_id":"serik.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2625018100","locking_period":90,"voting_power":"3937527150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3937527150000000000000000000","vote_positions":[]},{"voter_id":"roago.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"223179655390","locking_period":300,"voting_power":"1115898276950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"715898276900000000000000000000"}]},{"voter_id":"3228f4ec8437ab4271b99b7ce0c5d6a82ac28fe7be40ecce1f0920b12eaba915","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16452372830","locking_period":300,"voting_power":"82261864150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1000000","locking_period":300,"voting_power":"5000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"1000000","locking_period":135,"voting_power":"2250000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"20760795000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"27402183200000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"34106135900000000000000000000"}]},{"voter_id":"6490723760b963cabd9b82382d0faf0f1cc693dc7a9b8bdfd6595dde53bb6559","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"35936943900","locking_period":300,"voting_power":"179684719500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"79684719500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"50000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"50000000000000000000000000000"}]},{"voter_id":"stingray.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stingray.poolv1.near","voting_power":"5000000000000000000000000000"}]},{"voter_id":"011050b84e018322932173e1309b8496af96f7792d29a48cf82eaf7d12c24850","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3470000000000","locking_period":300,"voting_power":"17350000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"17350000000000000000000000000000"}]},{"voter_id":"bdaf.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1269125990000","locking_period":270,"voting_power":"5711066955000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"178571430000","locking_period":225,"voting_power":"669642862500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"1130952370000","locking_period":225,"voting_power":"4241071387500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"250000000000","locking_period":225,"voting_power":"937500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":4,"amount":"861884035070","locking_period":210,"voting_power":"3016594122745000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":5,"amount":"788881924520","locking_period":180,"voting_power":"2366645773560000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":6,"amount":"796553508940","locking_period":300,"voting_power":"3982767544700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":7,"amount":"761904750000","locking_period":120,"voting_power":"1523809500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":8,"amount":"314121000000","locking_period":165,"voting_power":"863832750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lavenderfive.poolv1.near","voting_power":"9892331030500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"polkachu.poolv1.near","voting_power":"9212744787800000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"1559281205000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"1784741122700000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"863832750000000000000000000000"}]},{"voter_id":"marior.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"65158439600","locking_period":300,"voting_power":"325792198000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"30719428500","locking_period":300,"voting_power":"153597142500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"479389340500000000000000000000"}]},{"voter_id":"davletuner.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10495055000","locking_period":120,"voting_power":"20990110000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"3228186500","locking_period":165,"voting_power":"8877512875000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"75176860000","locking_period":300,"voting_power":"375884300000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"75000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"405751922800000000000000000000"}]},{"voter_id":"phandinhtuan.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"123230054400","locking_period":300,"voting_power":"616150272000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"616150272000000000000000000000"}]},{"voter_id":"sivakalathi008.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"500000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"sharpdarts.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"welldonestake.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"builddao.poolv1.near","voting_power":"700000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"jagon.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"d1.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alpha-stake.poolv1.near","voting_power":"500000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"hakuna_matata.poolv1.near","voting_power":"500000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lunanova.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"cryptotribe.poolv1.near","voting_power":"600000000000000000000000000"}]},{"voter_id":"xuanduy86.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"23121411500","locking_period":300,"voting_power":"115607057500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"26799658700","locking_period":300,"voting_power":"133998293500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"742000000","locking_period":300,"voting_power":"3710000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"25463122400","locking_period":300,"voting_power":"127315612000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"380630963000000000000000000000"}]},{"voter_id":"fdea0a6bcd48da25f783feb9b66627698cb00a7b34f064eb3ff59e3367b625de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"22676096130","locking_period":300,"voting_power":"113380480650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"meria-staking.poolv1.near","voting_power":"113380480600000000000000000000"}]},{"voter_id":"b71nw.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7416352400","locking_period":180,"voting_power":"22249057200000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"22249057200000000000000000000","vote_positions":[]},{"voter_id":"sivakalathi.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"98276654600","locking_period":300,"voting_power":"491383273000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shurik.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lunanova.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"builddao.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"jagon.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"d1.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dragonfly.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"trust-nodes.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"4ire.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pinrocks.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearfans.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"cryptotribe.poolv1.near","voting_power":"30968291100000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"buildlinks.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"encipher.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alpha-stake.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"hakuna_matata.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"iamcryptobro.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dsrvlabs-staking.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"ni.poolv1.near","voting_power":"16000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"genesislab.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"106|mpDAO Grants #7 - June 2024-ludium.near","voting_power":"2414981900000000000000000000"},{"votable_address":"initiatives","votable_object_id":"83|mpDAO Grants #7 - June 2024-733770575b5ba41692fe56bfeadb98cf0f46492dfa608027ea6e0cc8cdf832be","voting_power":"2000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"139|mpDAO Grants #8 - August 2024-farmersleague.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"145|mpDAO Grants #8 - August 2024-d145ede2238bd103475bb8b173a2a48420d0a9de14917f0259d71cdfae77071c","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"144|mpDAO Grants #8 - August 2024-cryptopr3neur.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"138|mpDAO Grants #8 - August 2024-fairnode4031.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"122|mpDAO Grants #8 - August 2024-289e3d40eaaf7df42a14f468ad0ab0db5c1fe5b8a9c5141ae6ca31734481f46b","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"136|mpDAO Grants #8 - August 2024-bstt.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"126|mpDAO Grants #8 - August 2024-5e85fef96bd903eec08d1f59fabdc524d0ac13f44c7a1e08e43de9a01a62a11c","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"124|mpDAO Grants #8 - August 2024-3abf2c0f4d5b0d69dbc36cce64266b8ac1d06d4ba6b61664a2ac43fc809ac2a2","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"128|mpDAO Grants #8 - August 2024-aleiranova.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"137|mpDAO Grants #8 - August 2024-criptolaplata.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"133|mpDAO Grants #8 - August 2024-ffbc3084a4d75ed3c28a7b6c26f44a4ffb43dc3959365d80d70a9660913cbacf","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"135|mpDAO Grants #8 - August 2024-nohbekwoman.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"117|mpDAO Grants #8 - August 2024-bagrera.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"140|mpDAO Grants #8 - August 2024-latambuilder.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"125|mpDAO Grants #8 - August 2024-xiiw.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"118|mpDAO Grants #8 - August 2024-marcelorefi.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"143|mpDAO Grants #8 - August 2024-coineasydao.near","voting_power":"3000000000000000000000000000"}]},{"voter_id":"15870c8972a9fe6cdb7dfc2df835740108e8674cc170a091cd0ece0b9e4f6cfa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000886200","locking_period":270,"voting_power":"4503987900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"183000000","locking_period":180,"voting_power":"549000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"17349290","locking_period":300,"voting_power":"86746450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"86746450000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"5052987900000000000000000000"}]},{"voter_id":"mansaet.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"193545300200","locking_period":300,"voting_power":"967726501000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"967726501000000000000000000000"}]},{"voter_id":"pathrock.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"17006278400","locking_period":90,"voting_power":"25509417600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pathrocknetwork.poolv1.near","voting_power":"25509417600000000000000000000"}]},{"voter_id":"19f7dbc58065da8a3cc636987d646b3844517fef9533b3d86bef4f3e10a194bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"823081344000","locking_period":195,"voting_power":"2675014368000000000000000000000","unlocking_started_at":1726751184719,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"112890669800","locking_period":300,"voting_power":"564453349000000000000000000000","unlocking_started_at":1723052296755,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":2,"amount":"39043526300","locking_period":210,"voting_power":"136652342050000000000000000000","unlocking_started_at":1725348921894,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":3,"amount":"29988017300","locking_period":270,"voting_power":"134946077850000000000000000000","unlocking_started_at":1725348888783,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"syrbuss.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"418161013630","locking_period":300,"voting_power":"2090805068150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"1917190819800000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"173614248300000000000000000000"}]},{"voter_id":"0rz.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"502237362700","locking_period":300,"voting_power":"2511186813500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"2511186813500000000000000000000"}]},{"voter_id":"salpaslan.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"35730495600","locking_period":105,"voting_power":"62528367300000000000000000000","unlocking_started_at":1731416381037,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"sv404771.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"169793351100","locking_period":120,"voting_power":"339586702200000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"339586702200000000000000000000"}]},{"voter_id":"6d6ce3d63ba86cce16407b328e9d6b92421f7265be64f3efc9ef32f542176e91","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5781710500","locking_period":300,"voting_power":"28908552500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"here.poolv1.near","voting_power":"28908552500000000000000000000"}]},{"voter_id":"leandrogavidia.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1165606140","locking_period":300,"voting_power":"5828030700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5828030700000000000000000000","vote_positions":[]},{"voter_id":"59583199fc8d2b7207ad71f5213b3e7c917cbf07579d0e63fe1d7cebd9a2cd00","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"109173817500","locking_period":300,"voting_power":"545869087500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"40827000000","locking_period":180,"voting_power":"122481000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"30000000000","locking_period":60,"voting_power":"30000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"20000000000","locking_period":30,"voting_power":"10000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":4,"amount":"50000000000","locking_period":120,"voting_power":"100000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"87500000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"808350000000000000000000000000"}]},{"voter_id":"curmello.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7000016900","locking_period":300,"voting_power":"35000084500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"131|mpDAO Grants #8 - August 2024-dollarinveste.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"139|mpDAO Grants #8 - August 2024-farmersleague.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"136|mpDAO Grants #8 - August 2024-bstt.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"140|mpDAO Grants #8 - August 2024-latambuilder.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"5000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakin.poolv1.near","voting_power":"5000084500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"5000000000000000000000000000"}]},{"voter_id":"e0ace3957f5b8a6b2c1903c6ec4c16a69e5c76b231eb1bf259e219ccfc3c63db","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16314629900","locking_period":90,"voting_power":"24471944850000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"24471944850000000000000000000","vote_positions":[]},{"voter_id":"0f030b64cedb845906e84bf92076f09218de9a636e0758eab90a7aadb75048b4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7272730000","locking_period":165,"voting_power":"20000007500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7500000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000000"}]},{"voter_id":"lematecat.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"32768913580","locking_period":300,"voting_power":"163844567900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"163844567900000000000000000000"}]},{"voter_id":"v3ry.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12303870000","locking_period":270,"voting_power":"55367415000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"211767800000","locking_period":300,"voting_power":"1058839000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"47000000000","locking_period":195,"voting_power":"152750000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"130000000000","locking_period":285,"voting_power":"617500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":4,"amount":"15274000000","locking_period":180,"voting_power":"45822000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"p2p-org.poolv1.near","voting_power":"350000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"180000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"330000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"160000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stardust.poolv1.near","voting_power":"100000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"chorusone.poolv1.near","voting_power":"420000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"everstake.poolv1.near","voting_power":"290000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakin.poolv1.near","voting_power":"100278415000000000000000000000"}]},{"voter_id":"21mbulls.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"104597025760","locking_period":300,"voting_power":"522985128800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"finoa.poolv1.near","voting_power":"489071981000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"33913147800000000000000000000"}]},{"voter_id":"crypturion.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"38975358730","locking_period":300,"voting_power":"194876793650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"35000000","locking_period":300,"voting_power":"175000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"mexa-staking.poolv1.near","voting_power":"129932415500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"65119378100000000000000000000"}]},{"voter_id":"jepian.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"814504100","locking_period":90,"voting_power":"1221756150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"78|mpDAO Grants #7 - June 2024-irvingzcc.near","voting_power":"1221756100000000000000000000"}]},{"voter_id":"rodrigos.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"199000000","locking_period":300,"voting_power":"995000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"995000000000000000000000000"}]},{"voter_id":"3b19d8cefe1b7f4aff0745f0751d616d58b8553b35e6bb821edd301a6ecf2d4e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"aleh.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"126501701000","locking_period":90,"voting_power":"189752551500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"2049687100","locking_period":300,"voting_power":"10248435500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"33333000000","locking_period":90,"voting_power":"49999500000000000000000000000","unlocking_started_at":1727743009244,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":3,"amount":"71419000000","locking_period":90,"voting_power":"107128500000000000000000000000","unlocking_started_at":1728741366553,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"987000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"100000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"50000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"coinpayu.poolv1.near","voting_power":"50000000000000000000000000000"}]},{"voter_id":"e2f0fa9548b641ffc7f4eac2e19987a3d0b3c502f2e3ad7127c4c4d046b7afad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7000000","locking_period":90,"voting_power":"10500000000000000000000000","unlocking_started_at":1720378414463,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"lovali.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1276699700","locking_period":300,"voting_power":"6383498500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lovali.poolv1.near","voting_power":"6383498500000000000000000000"}]},{"voter_id":"dc431cbf756718c9babdeb6839a11f6b2eb29ce48bad6b250cf4db7eee5efb0b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3340921200","locking_period":300,"voting_power":"16704606000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"85|mpDAO Grants #7 - June 2024-fpsgames.near","voting_power":"10000606000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"64|mpDAO Grants #7 - June 2024-plugrel.near","voting_power":"6704000000000000000000000000"}]},{"voter_id":"jojokeko.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8776537700","locking_period":300,"voting_power":"43882688500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearuaguild.poolv1.near","voting_power":"43882688500000000000000000000"}]},{"voter_id":"snowfa11.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"75000000000","locking_period":180,"voting_power":"225000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"76738000000","locking_period":300,"voting_power":"383690000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"coinpayu.poolv1.near","voting_power":"135000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"135000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"138690000000000000000000000000"}]},{"voter_id":"kiskesis.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1575422300","locking_period":300,"voting_power":"7877111500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearuaguild.poolv1.near","voting_power":"7877111500000000000000000000"}]},{"voter_id":"nearukraineguild.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5915000000","locking_period":300,"voting_power":"29575000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearuaguild.poolv1.near","voting_power":"29575000000000000000000000000"}]},{"voter_id":"9c57aa38fecf83600922b69af9c8944742c3e45bcc1138ac534ac8de74ca7753","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"29184000000","locking_period":300,"voting_power":"145920000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"25000000000","locking_period":180,"voting_power":"75000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"110110000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"110810000000000000000000000000"}]},{"voter_id":"quickwaycrypto.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8711373700","locking_period":90,"voting_power":"13067060550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"83|mpDAO Grants #7 - June 2024-733770575b5ba41692fe56bfeadb98cf0f46492dfa608027ea6e0cc8cdf832be","voting_power":"13067060500000000000000000000"}]},{"voter_id":"pamm.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100000000","locking_period":180,"voting_power":"300000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"3559000000","locking_period":105,"voting_power":"6228250000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"3992306400","locking_period":300,"voting_power":"19961532000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"20000000","locking_period":60,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":4,"amount":"1176771600","locking_period":90,"voting_power":"1765157400000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"4ire.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"3000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"5274939400000000000000000000"}]},{"voter_id":"murasinvest.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"297271477000","locking_period":270,"voting_power":"1337721646500000000000000000000","unlocking_started_at":1733413844596,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"cesar667.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":90,"voting_power":"4500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"100000000","locking_period":300,"voting_power":"500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"504500000000000000000000000"}]},{"voter_id":"luckycat.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"691593700","locking_period":90,"voting_power":"1037390550000000000000000000","unlocking_started_at":1714829463538,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"5270925700","locking_period":60,"voting_power":"5270925700000000000000000000","unlocking_started_at":1714829615315,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"showme355.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"24801635800","locking_period":90,"voting_power":"37202453700000000000000000000","unlocking_started_at":1714831418807,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"894000000","locking_period":60,"voting_power":"894000000000000000000000000","unlocking_started_at":1714829193720,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"georgemarlow.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100000485500","locking_period":300,"voting_power":"500002427500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"604496000000","locking_period":300,"voting_power":"3022480000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"hakuna_matata.poolv1.near","voting_power":"3522482427500000000000000000000"}]},{"voter_id":"uzis.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"691593700","locking_period":90,"voting_power":"1037390550000000000000000000","unlocking_started_at":1714829889706,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"45000000","locking_period":60,"voting_power":"45000000000000000000000000","unlocking_started_at":1714829865130,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"konwey.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"135604870900","locking_period":300,"voting_power":"678024354500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"24354500000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"678000000000000000000000000000"}]},{"voter_id":"showme.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"691593700","locking_period":90,"voting_power":"1037390550000000000000000000","unlocking_started_at":1714830101467,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"42000000","locking_period":60,"voting_power":"42000000000000000000000000","unlocking_started_at":1714830119925,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"wwe.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"691593700","locking_period":90,"voting_power":"1037390550000000000000000000","unlocking_started_at":1714830256184,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"31000000","locking_period":60,"voting_power":"31000000000000000000000000","unlocking_started_at":1714830284122,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"showtime.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"691593700","locking_period":90,"voting_power":"1037390550000000000000000000","unlocking_started_at":1714830364816,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"34000000","locking_period":60,"voting_power":"34000000000000000000000000","unlocking_started_at":1714830384498,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"okamoto.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"46000000","locking_period":60,"voting_power":"46000000000000000000000000","unlocking_started_at":1714830512197,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"691593700","locking_period":105,"voting_power":"1210288975000000000000000000","unlocking_started_at":1714830535796,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"usaa.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"691593700","locking_period":90,"voting_power":"1037390550000000000000000000","unlocking_started_at":1714830649423,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"38000000","locking_period":60,"voting_power":"38000000000000000000000000","unlocking_started_at":1714830678784,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"7andi.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"691593700","locking_period":90,"voting_power":"1037390550000000000000000000","unlocking_started_at":1714830948897,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"jbs.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"711593700","locking_period":90,"voting_power":"1067390550000000000000000000","unlocking_started_at":1714830862740,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"earnestetim.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"507375800","locking_period":300,"voting_power":"2536879000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"109|mpDAO Grants #7 - June 2024-near-africa.near","voting_power":"2536879000000000000000000000"}]},{"voter_id":"vitalpointai.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"18080140400","locking_period":30,"voting_power":"9040070200000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"epic.poolv1.near","voting_power":"9040070200000000000000000000"}]},{"voter_id":"dcabrera.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"94029815300","locking_period":300,"voting_power":"470149076500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"220149076500000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"250000000000000000000000000000"}]},{"voter_id":"71de6add6efe99c57bb02bcacc4be6efaaba9d409403372144d2292db920df39","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"458664942800","locking_period":30,"voting_power":"229332471400000000000000000000","unlocking_started_at":1714723375781,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"albing.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5840570980","locking_period":300,"voting_power":"29202854900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"82912090","locking_period":300,"voting_power":"414560450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"4971818300000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"1500000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"3000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"cryptogarik.poolv1.near","voting_power":"10481839500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"9663757500000000000000000000"}]},{"voter_id":"ronyle.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"13650000000","locking_period":300,"voting_power":"68250000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"68250000000000000000000000000","vote_positions":[]},{"voter_id":"5687c659be1c73efa9cc4f5f90e466b39ec929d4c0ba5871a50df092015f49de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"115729500","locking_period":30,"voting_power":"57864750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"57864750000000000000000000","vote_positions":[]},{"voter_id":"imiroslav.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"15000000000","locking_period":120,"voting_power":"30000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"4803812600","locking_period":180,"voting_power":"14411437800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"polkachu.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"d1.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"24411437800000000000000000000"}]},{"voter_id":"sivakalathi006.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100672746900","locking_period":300,"voting_power":"503363734500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"ruziev.poolv1.near","voting_power":"12354614200000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"sharpdarts.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"builddao.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"jagon.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shurik.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"d1.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dragonfly.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"ni.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lunanova.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pinrocks.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"cryptotribe.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearfans.poolv1.near","voting_power":"18000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"buildnear.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearvietnamhub.poolv1.near","voting_power":"10009120300000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alpha-stake.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"hakuna_matata.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"10000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"iamcryptobro.poolv1.near","voting_power":"30000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dsrvlabs-staking.poolv1.near","voting_power":"20000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"89|mpDAO Grants #7 - June 2024-trovelabs.near","voting_power":"2000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"139|mpDAO Grants #8 - August 2024-farmersleague.near","voting_power":"10000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"138|mpDAO Grants #8 - August 2024-fairnode4031.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"145|mpDAO Grants #8 - August 2024-d145ede2238bd103475bb8b173a2a48420d0a9de14917f0259d71cdfae77071c","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"124|mpDAO Grants #8 - August 2024-3abf2c0f4d5b0d69dbc36cce64266b8ac1d06d4ba6b61664a2ac43fc809ac2a2","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"136|mpDAO Grants #8 - August 2024-bstt.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"128|mpDAO Grants #8 - August 2024-aleiranova.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"135|mpDAO Grants #8 - August 2024-nohbekwoman.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"133|mpDAO Grants #8 - August 2024-ffbc3084a4d75ed3c28a7b6c26f44a4ffb43dc3959365d80d70a9660913cbacf","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"4000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"118|mpDAO Grants #8 - August 2024-marcelorefi.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"131|mpDAO Grants #8 - August 2024-dollarinveste.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"143|mpDAO Grants #8 - August 2024-coineasydao.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"129|mpDAO Grants #8 - August 2024-0xmitz.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"144|mpDAO Grants #8 - August 2024-cryptopr3neur.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"125|mpDAO Grants #8 - August 2024-xiiw.near","voting_power":"3000000000000000000000000000"}]},{"voter_id":"ilya.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"176896422200","locking_period":165,"voting_power":"486465161050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000050000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"323792844400000000000000000000"},{"votable_address":"initiatives","votable_object_id":"96|mpDAO Grants #7 - June 2024-dapplooker.near","voting_power":"30000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"118|mpDAO Grants #8 - August 2024-marcelorefi.near","voting_power":"10000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"108|mpDAO Grants #7 - June 2024-553a5330546aa39850aa0e972bc1bec1c7018575ba141fa6f0a379cf28d46d16","voting_power":"40000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"66|mpDAO Grants #7 - June 2024-figitalclub.near","voting_power":"72672316600000000000000000000"}]},{"voter_id":"a.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"232537338800","locking_period":300,"voting_power":"1162686694000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"1162686694000000000000000000000"}]},{"voter_id":"bestlove89.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"333301900","locking_period":90,"voting_power":"499952850000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"499952800000000000000000000"}]},{"voter_id":"pahol.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"73524025800","locking_period":300,"voting_power":"367620129000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"p2p-org.poolv1.near","voting_power":"367620129000000000000000000000"}]},{"voter_id":"ktxfauzy.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8834144400","locking_period":300,"voting_power":"44170722000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"meteor.poolv1.near","voting_power":"44170720000000000000000000000"}]},{"voter_id":"mr_free.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"38000000","locking_period":90,"voting_power":"57000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"57000000000000000000000000","vote_positions":[]},{"voter_id":"173ec8e6ef2f0e328753c1be4779bb5467c02f14ea6b9fe1e69221d7bdc93f6e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"andersonr.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"354251600","locking_period":300,"voting_power":"1771258000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1771258000000000000000000000","vote_positions":[]},{"voter_id":"a4d73137b6ed71e647678dafe514f94e31e2312e2c7a507125c3803bb2bcd475","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"20000000000","locking_period":30,"voting_power":"10000000000000000000000000000","unlocking_started_at":1728258996216,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"profit.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6463933370850","locking_period":300,"voting_power":"32319666854250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"5000000","locking_period":300,"voting_power":"25000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"oe.poolv1.near","voting_power":"30000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"2319691854200000000000000000000"}]},{"voter_id":"brzk-93444.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5727419100","locking_period":90,"voting_power":"8591128650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3591128650000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"2000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"3000000000000000000000000000"}]},{"voter_id":"djq.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1395950700","locking_period":30,"voting_power":"697975350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5350000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"697970000000000000000000000"}]},{"voter_id":"e_reece.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2394446500","locking_period":300,"voting_power":"11972232500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2232500000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"hakuna_matata.poolv1.near","voting_power":"11970000000000000000000000000"}]},{"voter_id":"ollie.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"701794250000","locking_period":300,"voting_power":"3508971250000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"3508971250000000000000000000000"}]},{"voter_id":"transitmoi.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2414219500","locking_period":300,"voting_power":"12071097500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12071097500000000000000000000"}]},{"voter_id":"chloe.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"138719132830","locking_period":300,"voting_power":"693595664150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"25037114700","locking_period":300,"voting_power":"125185573500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"369090973400000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"422245870000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"monresearch.poolv1.near","voting_power":"27444394200000000000000000000"}]},{"voter_id":"expenses-meta-pool.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"324785000","locking_period":180,"voting_power":"974355000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"974355000000000000000000000","vote_positions":[]},{"voter_id":"prinwattana.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5153400","locking_period":90,"voting_power":"7730100000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7730100000000000000000000","vote_positions":[]},{"voter_id":"fliareccha.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1163826721450","locking_period":300,"voting_power":"5819133607250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"3497000500000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"coinpayu.poolv1.near","voting_power":"501119148000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"iamcryptobro.poolv1.near","voting_power":"319000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pathrocknetwork.poolv1.near","voting_power":"502013959200000000000000000000"}]},{"voter_id":"gryptoguru.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"197872100","locking_period":300,"voting_power":"989360500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"300000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"689360500000000000000000000"}]},{"voter_id":"kriptocilginlari.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"45366000","locking_period":300,"voting_power":"226830000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"226830000000000000000000000","vote_positions":[]},{"voter_id":"0x0299b2c88809F5Cd83425c8ea8FffF332a1E6e04.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"liusisi.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1500624300","locking_period":90,"voting_power":"2250936450000000000000000000","unlocking_started_at":1717551396822,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"secure.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"794870926300","locking_period":300,"voting_power":"3974354631500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stardust.poolv1.near","voting_power":"3974354631500000000000000000000"}]},{"voter_id":"centurion.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"244203961600","locking_period":300,"voting_power":"1221019808000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stardust.poolv1.near","voting_power":"1221019808000000000000000000000"}]},{"voter_id":"jaysonkr.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"418517018400","locking_period":300,"voting_power":"2092585092000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"143|mpDAO Grants #8 - August 2024-coineasydao.near","voting_power":"2092585092000000000000000000000"}]},{"voter_id":"serxy.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100000000000","locking_period":60,"voting_power":"100000000000000000000000000000","unlocking_started_at":1730635967602,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"100000000000","locking_period":270,"voting_power":"450000000000000000000000000000","unlocking_started_at":1730635990484,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"0x7bF9a18915D1d40CfDa5ADaa39028F62DC7192E0.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"awsomzs.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"18544446700","locking_period":300,"voting_power":"92722233500000000000000000000","unlocking_started_at":1715627876104,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"0x15f4dE244107DFd83039927becB74934969087C2.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"165283000000","locking_period":180,"voting_power":"495849000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"121|mpDAO Grants #8 - August 2024-meximalist.near","voting_power":"495849000000000000000000000000"}]},{"voter_id":"bochenn.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"40869363000","locking_period":300,"voting_power":"204346815000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"197465173500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"6881641500000000000000000000"}]},{"voter_id":"cryptonum.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10333242300","locking_period":300,"voting_power":"51666211500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakely_io.poolv1.near","voting_power":"15000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"16666211500000000000000000000"}]},{"voter_id":"chiennguyen1985.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"144355687100","locking_period":300,"voting_power":"721778435500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"68849750000","locking_period":300,"voting_power":"344248750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"928327685500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"137699500000000000000000000000"}]},{"voter_id":"pacek.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"242576650800","locking_period":210,"voting_power":"849018277800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"7729000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"720000952400000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"121288325400000000000000000000"}]},{"voter_id":"cunum.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"140598200600","locking_period":300,"voting_power":"702991003000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"cunum.poolv1.near","voting_power":"702991003000000000000000000000"}]},{"voter_id":"chain0ps.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"117241000000","locking_period":300,"voting_power":"586205000000000000000000000000","unlocking_started_at":1729968457538,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"1187500","locking_period":255,"voting_power":"5046875000000000000000000","unlocking_started_at":1717486868740,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"dipsyv.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"40000000","locking_period":300,"voting_power":"200000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"200000000000000000000000000"}]},{"voter_id":"3a996e03e7247a0989f546b1b1d02905f53bc8e3fd23920c725d642910f902c8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3632000","locking_period":210,"voting_power":"12712000000000000000000000","unlocking_started_at":1722423551140,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"5000000","locking_period":210,"voting_power":"17500000000000000000000000","unlocking_started_at":1722535624172,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":2,"amount":"97140000000","locking_period":195,"voting_power":"315705000000000000000000000000","unlocking_started_at":1725335843062,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":3,"amount":"100000000000","locking_period":270,"voting_power":"450000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"chain0ps.poolv1.near","voting_power":"450000000000000000000000000000"}]},{"voter_id":"impe83.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10000000000","locking_period":30,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"10000000000","locking_period":90,"voting_power":"15000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakely_io.poolv1.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"116|mpDAO Grants #8 - August 2024-plugrel.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"135|mpDAO Grants #8 - August 2024-nohbekwoman.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"133|mpDAO Grants #8 - August 2024-ffbc3084a4d75ed3c28a7b6c26f44a4ffb43dc3959365d80d70a9660913cbacf","voting_power":"5000000000000000000000000000"}]},{"voter_id":"2d36feb3bc40513b31e852100a2b70cdb143bfade40a393a8c04d4931e10175c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100000000","locking_period":300,"voting_power":"500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"p2p-org.poolv1.near","voting_power":"500000000000000000000000000"}]},{"voter_id":"luzmargaritas.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"615737007700","locking_period":90,"voting_power":"923605511550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"113535008220","locking_period":300,"voting_power":"567675041100000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"2000000","locking_period":30,"voting_power":"1000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"1230540434900000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"consensus_finoa_01.poolv1.near","voting_power":"123631511500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nativo.pool.near","voting_power":"39815992700000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"40000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lavenderfive.poolv1.near","voting_power":"48993613500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"8300000000000000000000000000"}]},{"voter_id":"satojandro.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"461733459070","locking_period":300,"voting_power":"2308667295350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"14638000000","locking_period":90,"voting_power":"21957000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"optimusvalidatornetwork.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakin.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lux.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"205663871000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"624960424300000000000000000000"}]},{"voter_id":"lovelysugar.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":30,"voting_power":"500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"320000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"30000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"69|mpDAO Grants #7 - June 2024-odisea.near","voting_power":"50000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"97|mpDAO Grants #7 - June 2024-solowcripto.near","voting_power":"100000000000000000000000000"}]},{"voter_id":"vinhdao286.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000000","locking_period":270,"voting_power":"36000000000000000000000000000","unlocking_started_at":1714882252568,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"566000000","locking_period":300,"voting_power":"2830000000000000000000000000","unlocking_started_at":1714882266639,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"kangaroojack.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"706830800","locking_period":300,"voting_power":"3534154000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"128000000","locking_period":30,"voting_power":"64000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"89|mpDAO Grants #7 - June 2024-trovelabs.near","voting_power":"3000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"90|mpDAO Grants #7 - June 2024-nekotoken.near","voting_power":"598154000000000000000000000"}]},{"voter_id":"danieldao.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3787360000","locking_period":300,"voting_power":"18936800000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"18936800000000000000000000000","vote_positions":[]},{"voter_id":"b9dca1592030dcd114852805d6efaf86b93a51c95613ee184233e9604a5d5924","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"plenum.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16226095800","locking_period":300,"voting_power":"81130479000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"81130479000000000000000000000"}]},{"voter_id":"patvg.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"332890200","locking_period":180,"voting_power":"998670600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"104|mpDAO Grants #7 - June 2024-lematecat.near","voting_power":"998670600000000000000000000"}]},{"voter_id":"ebtgroup.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3333333400000","locking_period":90,"voting_power":"5000000100000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000100000000000000000000000","vote_positions":[]},{"voter_id":"ux1.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"400000000000","locking_period":300,"voting_power":"2000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"2000000000000000000000000000000"}]},{"voter_id":"idomoji.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3549130400","locking_period":300,"voting_power":"17745652000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"meteor.poolv1.near","voting_power":"17745652000000000000000000000"}]},{"voter_id":"skyempire.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"11100474500","locking_period":300,"voting_power":"55502372500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"15000000","locking_period":210,"voting_power":"52500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"25000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"15000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"15554872500000000000000000000"}]},{"voter_id":"jefe.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6349837300","locking_period":270,"voting_power":"28574267850000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"28574267850000000000000000000","vote_positions":[]},{"voter_id":"victorchaos.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"57167811100","locking_period":30,"voting_power":"28583905550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"28583905550000000000000000000","vote_positions":[]},{"voter_id":"0x442d6AF71aD2f51698ef42C3Df8584b78285a7D2.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"028521fdcdb25436d59ca93155651d613b6d0312010fea8f69d1fbebeeb91b15","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"247486800","locking_period":90,"voting_power":"371230200000000000000000000","unlocking_started_at":1730853332528,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"1357971200","locking_period":60,"voting_power":"1357971200000000000000000000","unlocking_started_at":1730853292623,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"854dea7ff905f277012f0f4a1a029494d3ba90352166a89fac32942e6a2d1ef5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1181470160000","locking_period":300,"voting_power":"5907350800000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"coinpayu.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"polkachu.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"407350800000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"optimusvalidatornetwork.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dexagon.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"cryptogarik.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lavenderfive.poolv1.near","voting_power":"500000000000000000000000000000"}]},{"voter_id":"032890df5f801f63f81175ca1dc53617657dd309b6967814461b344af606942b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"127575925500","locking_period":300,"voting_power":"637879627500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"7225068430","locking_period":120,"voting_power":"14450136860000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"60000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"473450136800000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"178879627500000000000000000000"}]},{"voter_id":"938c83fcf90350e4e5ad7f1a802d3db742718e194efbc77cf5a250742f61aeb9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"157101400","locking_period":300,"voting_power":"785507000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"785507000000000000000000000"}]},{"voter_id":"4ebf8d13c98d4dfe90e272a6ca92657ce87478383313e2c3848374b9fcdd0d9c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1585391570","locking_period":300,"voting_power":"7926957850000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"97|mpDAO Grants #7 - June 2024-solowcripto.near","voting_power":"6136078000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1790879800000000000000000000"}]},{"voter_id":"103ddbe67a0e8be99b8515cb9ae78bb9e169cda00db8d29a0fa38aa4814a9b9a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1600000000","locking_period":300,"voting_power":"8000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"2900000000","locking_period":30,"voting_power":"1450000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"1500000000","locking_period":90,"voting_power":"2250000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"dacmpool.poolv1.near","voting_power":"5700000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"6000000000000000000000000000"}]},{"voter_id":"isk0p4t1x.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1575695300","locking_period":180,"voting_power":"4727085900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4727085900000000000000000000"}]},{"voter_id":"suave.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"42346290500","locking_period":180,"voting_power":"127038871500000000000000000000","unlocking_started_at":1717480136533,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"814000000","locking_period":300,"voting_power":"4070000000000000000000000000","unlocking_started_at":1717480199068,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":2,"amount":"1962000000","locking_period":90,"voting_power":"2943000000000000000000000000","unlocking_started_at":1717480213232,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"craftorium.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8682966500","locking_period":120,"voting_power":"17365933000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17365933000000000000000000000","vote_positions":[]},{"voter_id":"wmheng78.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"87927199300","locking_period":120,"voting_power":"175854398600000000000000000000","unlocking_started_at":1731517191195,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"3442041200","locking_period":30,"voting_power":"1721020600000000000000000000","unlocking_started_at":1732458459623,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"bender172319.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"404246500","locking_period":165,"voting_power":"1111677875000000000000000000","unlocking_started_at":1714941537536,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"0xmitz.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"30530952900","locking_period":300,"voting_power":"152654764500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"152654764500000000000000000000"}]},{"voter_id":"0782f78681fdf8597ea70f16a52b57096e386e192f6c8ee316847808537b06a3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"784063850","locking_period":300,"voting_power":"3920319250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"chain0ps.poolv1.near","voting_power":"3920319200000000000000000000"}]},{"voter_id":"331835d03584caa318219412d054010e5433fd19bdc872c954832f9295d89ff2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"trilli.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"61808170000","locking_period":300,"voting_power":"309040850000000000000000000000","unlocking_started_at":1717009373429,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"laurentcora.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"20000000","locking_period":30,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16000000000000000000000000","vote_positions":[]},{"voter_id":"3923f6035ff12ae3a2b2de19c3a75f8b13e31fe9b6fd5835f0cefdf7a8bddb52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"78736645600","locking_period":90,"voting_power":"118104968400000000000000000000","unlocking_started_at":1732072368058,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"0a561cd515b6c7456452202daecb20971ba9ef68284f96485394a7124716f91e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"kingofkingspages.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"98482160","locking_period":300,"voting_power":"492410800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"342824900000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"21596900000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"smart-stake.poolv1.near","voting_power":"30000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"30000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"142|mpDAO Grants #8 - August 2024-refibogota.near","voting_power":"27000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"136|mpDAO Grants #8 - August 2024-bstt.near","voting_power":"40989000000000000000000000"}]},{"voter_id":"cosine.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"44277800","locking_period":90,"voting_power":"66416700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"51600000000","locking_period":30,"voting_power":"25800000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"minion.poolv1.near","voting_power":"25866416700000000000000000000"}]},{"voter_id":"stakeblock.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"84164564800","locking_period":300,"voting_power":"420822824000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"420822824000000000000000000000","vote_positions":[]},{"voter_id":"xuantd06.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"701000000","locking_period":300,"voting_power":"3505000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"9428345600","locking_period":105,"voting_power":"16499604800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"3299000000","locking_period":300,"voting_power":"16495000000000000000000000000","unlocking_started_at":1717902660136,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"4604800000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000000"}]},{"voter_id":"duongnhuice.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1225005600","locking_period":300,"voting_power":"6125028000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6125028000000000000000000000","vote_positions":[]},{"voter_id":"ac15a0f879f76d5fed6b617171656c40f5232730dcfc4b45799136522537f35b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"35894259300","locking_period":90,"voting_power":"53841388950000000000000000000","unlocking_started_at":1729266569561,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"540576900","locking_period":120,"voting_power":"1081153800000000000000000000","unlocking_started_at":1729266188207,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"bf947d9a9ac8934645559f9cd97da96eddf527be21ef7d7e635ee526bfea1d52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"18809136700","locking_period":90,"voting_power":"28213705050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"15000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"13213705000000000000000000000"}]},{"voter_id":"acaryln.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":30,"voting_power":"500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"335000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"100000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"69|mpDAO Grants #7 - June 2024-odisea.near","voting_power":"65000000000000000000000000"}]},{"voter_id":"antiscaliger.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"58327500","locking_period":90,"voting_power":"87491250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"87491250000000000000000000","vote_positions":[]},{"voter_id":"pangdao.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4383355100","locking_period":300,"voting_power":"21916775500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"21916775500000000000000000000","vote_positions":[]},{"voter_id":"avtf.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2501484140100","locking_period":300,"voting_power":"12507420700500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12507420700500000000000000000000"}]},{"voter_id":"sandeephulsur.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"206509764000","locking_period":180,"voting_power":"619529292000000000000000000000","unlocking_started_at":1718557112477,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"imagine_nl.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"44178800","locking_period":45,"voting_power":"33134100000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"33134100000000000000000000","vote_positions":[]},{"voter_id":"7ab36cef3907536334b06360c8ecad2f68be4205cd422484135ab579b6fadde4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"196954300","locking_period":90,"voting_power":"295431450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"295431450000000000000000000","vote_positions":[]},{"voter_id":"akaiqn113.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"25000000000","locking_period":300,"voting_power":"125000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"31250000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lunanova.poolv1.near","voting_power":"93750000000000000000000000000"}]},{"voter_id":"4aafb0fa32afa8bb20a3e15c8ac55126f4bf325c476a6575498cc8af11d05d52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2815258700","locking_period":300,"voting_power":"14076293500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"astro-stakers.poolv1.near","voting_power":"1407629300000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"12668664200000000000000000000"}]},{"voter_id":"tzouf.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"40000000000","locking_period":300,"voting_power":"200000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"200000000000000000000000000000","vote_positions":[]},{"voter_id":"fernix.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1548460000","locking_period":150,"voting_power":"3871150000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"3871150000000000000000000000"}]},{"voter_id":"baf318138fe9ae6648a1e06f12f6a7ac079d47c6097eb41737fc1f8c9cd3b71c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2137460000","locking_period":300,"voting_power":"10687300000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"88|mpDAO Grants #7 - June 2024-100diasder.near","voting_power":"10687300000000000000000000000"}]},{"voter_id":"rahulgoel.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"919872500","locking_period":300,"voting_power":"4599362500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4599362500000000000000000000","vote_positions":[]},{"voter_id":"viettrungdoan91.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"49647336300","locking_period":135,"voting_power":"111706506675000000000000000000","unlocking_started_at":1715001641799,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"sailinon.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"46872089800","locking_period":30,"voting_power":"23436044900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"23436044900000000000000000000","vote_positions":[]},{"voter_id":"venomity.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"218000000","locking_period":300,"voting_power":"1090000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"1090000000000000000000000000"}]},{"voter_id":"tahuutho.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1548460000","locking_period":240,"voting_power":"6193840000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"6193840000000000000000000000"}]},{"voter_id":"mxweb3.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"57674139700","locking_period":300,"voting_power":"288370698500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"288370698500000000000000000000"}]},{"voter_id":"magic.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"59192298500","locking_period":300,"voting_power":"295961492500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"builddao.poolv1.near","voting_power":"295961492500000000000000000000"}]},{"voter_id":"dollarinveste.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7795086000","locking_period":300,"voting_power":"38975430000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"131|mpDAO Grants #8 - August 2024-dollarinveste.near","voting_power":"38975430000000000000000000000"}]},{"voter_id":"wap909.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"424500401120","locking_period":300,"voting_power":"2122502005600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"130000000000","locking_period":300,"voting_power":"650000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"10000000000","locking_period":300,"voting_power":"50000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"35500000000","locking_period":300,"voting_power":"177500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"115505000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"minion.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"p2p-org.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"here.poolv1.near","voting_power":"230000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"63169390100000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"26005000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"144950000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"66|mpDAO Grants #7 - June 2024-figitalclub.near","voting_power":"300000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"105|mpDAO Grants #7 - June 2024-marcelorefi.near","voting_power":"200000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"91|mpDAO Grants #7 - June 2024-4d1fe2e38339dc82b68afd1d09bac3068c30f22f09dc693e8ab6610da8e15c04","voting_power":"220372615500000000000000000000"},{"votable_address":"initiatives","votable_object_id":"83|mpDAO Grants #7 - June 2024-733770575b5ba41692fe56bfeadb98cf0f46492dfa608027ea6e0cc8cdf832be","voting_power":"200000000000000000000000000000"}]},{"voter_id":"3add6ae62eb60d4edadca209e37012780f32c3d3cf31868496b91f1988bf043a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"37137117500","locking_period":90,"voting_power":"55705676250000000000000000000","unlocking_started_at":1716421523901,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"newnearwallet.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"845742145800","locking_period":150,"voting_power":"2114355364500000000000000000000","unlocking_started_at":1732208388683,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"draconnia.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1903014900","locking_period":300,"voting_power":"9515074500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"347000000","locking_period":30,"voting_power":"173500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"9688574500000000000000000000"}]},{"voter_id":"544e14070a33ec9a7e5d34556f5ddaa45411e73d394039cc241fa92e2bc5cfb5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2067778200","locking_period":300,"voting_power":"10338891000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"1000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"sharpdarts.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"welldonestake.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"builddao.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zkv_staketosupportprivacy.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"jagon.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dragonfly.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"trust-nodes.poolv1.near","voting_power":"300000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"4ire.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pinrocks.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"centurion.poolv1.near","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pathrocknetwork.poolv1.near","voting_power":"1667300000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alpha-stake.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"hakuna_matata.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lunanova.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"ni.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"cryptotribe.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"600000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shurik.poolv1.near","voting_power":"637223700000000000000000000"}]},{"voter_id":"vvm25.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"57700000","locking_period":300,"voting_power":"288500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"288500000000000000000000000","vote_positions":[]},{"voter_id":"dund.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1204000000","locking_period":30,"voting_power":"602000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"576000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"67|mpDAO Grants #7 - June 2024-baryo01.near","voting_power":"10000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"112|mpDAO Grants #7 - June 2024-hoangthien1109.near","voting_power":"11000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"69|mpDAO Grants #7 - June 2024-odisea.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"9968.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1050000000","locking_period":30,"voting_power":"525000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"500000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"112|mpDAO Grants #7 - June 2024-hoangthien1109.near","voting_power":"15000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"71|mpDAO Grants #7 - June 2024-anarchychains.near","voting_power":"8000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"67|mpDAO Grants #7 - June 2024-baryo01.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"x999.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1010629400","locking_period":45,"voting_power":"757972050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"710972050000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"112|mpDAO Grants #7 - June 2024-hoangthien1109.near","voting_power":"20000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"110|mpDAO Grants #7 - June 2024-a0824e3043025dbc552529f9fefcde06b5c43c0ebad5d595d1f3343153932b88","voting_power":"10000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"68|mpDAO Grants #7 - June 2024-3sblockchain.near","voting_power":"17000000000000000000000000"}]},{"voter_id":"pablopd.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6741186400","locking_period":300,"voting_power":"33705932000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"33705932000000000000000000000"}]},{"voter_id":"marysol.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"48051052800","locking_period":300,"voting_power":"240255264000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"240255264000000000000000000000"}]},{"voter_id":"cryptomoneymaker.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"31652702800","locking_period":30,"voting_power":"15826351400000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"4794004400","locking_period":60,"voting_power":"4794004400000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"523000000","locking_period":300,"voting_power":"2615000000000000000000000000","unlocking_started_at":1715076609230,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20620355800000000000000000000"}]},{"voter_id":"iosg01.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"13100001000000","locking_period":30,"voting_power":"6550000500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6550000500000000000000000000000","vote_positions":[]},{"voter_id":"towanda.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"25500000","locking_period":45,"voting_power":"19125000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1439316500","locking_period":60,"voting_power":"1439316500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"20000000","locking_period":90,"voting_power":"30000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"9500000","locking_period":30,"voting_power":"4750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"1493191500000000000000000000"}]},{"voter_id":"suz.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"122153000000","locking_period":90,"voting_power":"183229500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"183229500000000000000000000000"}]},{"voter_id":"nikhil.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5076282200","locking_period":300,"voting_power":"25381411000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"25381411000000000000000000000","vote_positions":[]},{"voter_id":"metapool20.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"101876349400","locking_period":300,"voting_power":"509381747000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"509381747000000000000000000000"}]},{"voter_id":"usainbluntmx.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4967206710","locking_period":300,"voting_power":"24836033550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4836033550000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"20000000000000000000000000000"}]},{"voter_id":"psd.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"800000000000","locking_period":30,"voting_power":"400000000000000000000000000000","unlocking_started_at":1718077736393,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"meximalist.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2248074700","locking_period":300,"voting_power":"11240373500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"11240373500000000000000000000"}]},{"voter_id":"xvii.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"416786600","locking_period":300,"voting_power":"2083933000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"17000000","locking_period":30,"voting_power":"8500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2092433000000000000000000000","vote_positions":[]},{"voter_id":"norelyz.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1100000000","locking_period":300,"voting_power":"5500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"191000000","locking_period":90,"voting_power":"286500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"5786500000000000000000000000"}]},{"voter_id":"smjunior.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2914829100","locking_period":300,"voting_power":"14574145500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"200000000","locking_period":300,"voting_power":"1000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"10574145500000000000000000000"}]},{"voter_id":"rondell.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"302214342100","locking_period":90,"voting_power":"453321513150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"26138245800","locking_period":105,"voting_power":"45741930150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"499063443300000000000000000000","vote_positions":[]},{"voter_id":"paderuu.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"201000000","locking_period":300,"voting_power":"1005000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"114|mpDAO Grants #7 - June 2024-aksanova33.near","voting_power":"1005000000000000000000000000"}]},{"voter_id":"hos5018.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3163661200","locking_period":300,"voting_power":"15818306000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"143|mpDAO Grants #8 - August 2024-coineasydao.near","voting_power":"15818306000000000000000000000"}]},{"voter_id":"nearmultiverse.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"36833578700","locking_period":300,"voting_power":"184167893500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"419077000","locking_period":300,"voting_power":"2095385000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"186263278500000000000000000000"}]},{"voter_id":"0xAcaa2077b89799b81F390d9cf015Be8d38108A36.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6834000000","locking_period":300,"voting_power":"34170000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"11615000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"p2pstaking.poolv1.near","voting_power":"10555000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stardust.poolv1.near","voting_power":"12000000000000000000000000000"}]},{"voter_id":"agusin.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"658762400","locking_period":300,"voting_power":"3293812000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"3293812000000000000000000000"}]},{"voter_id":"3828a8400589b9faa74d53169ee33bad7a2ed3b68bfb01e8c855454391e7b7a7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"42155844100","locking_period":90,"voting_power":"63233766150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"63233766150000000000000000000","vote_positions":[]},{"voter_id":"okpok.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"132894668500","locking_period":300,"voting_power":"664473342500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakeseeker.poolv1.near","voting_power":"664473342500000000000000000000"}]},{"voter_id":"bjirken.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"437000000","locking_period":30,"voting_power":"218500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"200000000","locking_period":300,"voting_power":"1000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"535000000","locking_period":90,"voting_power":"802500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2021000000000000000000000000","vote_positions":[]},{"voter_id":"bjorken.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"62169000000","locking_period":270,"voting_power":"279760500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"20000000000","locking_period":135,"voting_power":"45000000000000000000000000000","unlocking_started_at":1725956697284,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"279760500000000000000000000000"}]},{"voter_id":"tiberiu16.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3760603900","locking_period":300,"voting_power":"18803019500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"18803019500000000000000000000"}]},{"voter_id":"samwangg.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3186786600","locking_period":75,"voting_power":"3983483250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3983483250000000000000000000","vote_positions":[]},{"voter_id":"sam_wang.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"17500000000","locking_period":75,"voting_power":"21875000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"21875000000000000000000000000","vote_positions":[]},{"voter_id":"flyingcumbancha.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4686891800","locking_period":300,"voting_power":"23434459000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"23434459000000000000000000000"}]},{"voter_id":"izcc.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16211176100","locking_period":300,"voting_power":"81055880500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"115|mpDAO Grants #8 - August 2024-irvingzcc.near","voting_power":"81055880500000000000000000000"}]},{"voter_id":"e474b668ea4731cf923bc78733f14c849b2d2bb78657af863a84dbc670fe746c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"669000000","locking_period":300,"voting_power":"3345000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"110|mpDAO Grants #7 - June 2024-a0824e3043025dbc552529f9fefcde06b5c43c0ebad5d595d1f3343153932b88","voting_power":"3345000000000000000000000000"}]},{"voter_id":"fersoria.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"117000000","locking_period":180,"voting_power":"351000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1000000000","locking_period":180,"voting_power":"3000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"77|mpDAO Grants #7 - June 2024-1724cbdb130e5b0f9bd750f666f4fe00581489fcc294dca4ed055c90c76808fc","voting_power":"3351000000000000000000000000"}]},{"voter_id":"zahrah.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"261000000","locking_period":300,"voting_power":"1305000000000000000000000000","unlocking_started_at":1714795035865,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"e8669b64d048c0b7627a49250cd08407f9020c4ec252350838c29956c53f4a92","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"11525635800","locking_period":300,"voting_power":"57628179000000000000000000000","unlocking_started_at":1716310161875,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"jack1265.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7489666000","locking_period":60,"voting_power":"7489666000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7489666000000000000000000000","vote_positions":[]},{"voter_id":"cryptoreumd.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"574343300","locking_period":300,"voting_power":"2871716500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"2871716500000000000000000000"}]},{"voter_id":"c8a73319812a4e49a3d18f097cc5b00c105d724c5451ec5e38c6146c5561c800","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"419828200","locking_period":90,"voting_power":"629742300000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"333171200","locking_period":210,"voting_power":"1166099200000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1795841500000000000000000000"}]},{"voter_id":"wdz.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3624088600","locking_period":300,"voting_power":"18120443000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"18120443000000000000000000000","vote_positions":[]},{"voter_id":"imok.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1496000000","locking_period":90,"voting_power":"2244000000000000000000000000","unlocking_started_at":1717345585368,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"car_parts.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6569600000","locking_period":90,"voting_power":"9854400000000000000000000000","unlocking_started_at":1714991687794,"is_unlocked":true,"is_unlocking":false,"is_locked":false},{"index":1,"amount":"2296509600","locking_period":300,"voting_power":"11482548000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"1732548000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"meteor.poolv1.near","voting_power":"9750000000000000000000000000"}]},{"voter_id":"mullthebull.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"27830480000","locking_period":240,"voting_power":"111321920000000000000000000000","unlocking_started_at":1728571162160,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"1000000000","locking_period":30,"voting_power":"500000000000000000000000000","unlocking_started_at":1728571173050,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"flokielon.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"93669107700","locking_period":300,"voting_power":"468345538500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"1545538500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"astro-stakers.poolv1.near","voting_power":"466800000000000000000000000000"}]},{"voter_id":"condog.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"28830480000","locking_period":285,"voting_power":"136944780000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"136944780000000000000000000000"}]},{"voter_id":"lastryano.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"27027920000","locking_period":285,"voting_power":"128382620000000000000000000000","unlocking_started_at":1733280809798,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"zardoz90.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"24554920000","locking_period":285,"voting_power":"116635870000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"883000000","locking_period":135,"voting_power":"1986750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"118622620000000000000000000000"}]},{"voter_id":"farpost.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"43719400","locking_period":300,"voting_power":"218597000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"218597000000000000000000000","vote_positions":[]},{"voter_id":"cuongdcdev.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3944328600","locking_period":300,"voting_power":"19721643000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"721000000","locking_period":30,"voting_power":"360500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"buildnear.poolv1.near","voting_power":"20082143000000000000000000000"}]},{"voter_id":"nostory.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"800000","locking_period":60,"voting_power":"800000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"734556000","locking_period":300,"voting_power":"3672780000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"66|mpDAO Grants #7 - June 2024-figitalclub.near","voting_power":"1000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"71|mpDAO Grants #7 - June 2024-anarchychains.near","voting_power":"1000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"1000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"673580000000000000000000000"}]},{"voter_id":"309872076a518c9c96935b959d13e2f23546113bc6ea41941e5562b65cbf7085","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"669000000","locking_period":165,"voting_power":"1839750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1839750000000000000000000000","vote_positions":[]},{"voter_id":"0x56D994c08CdC5c9189B4d6863129e5F195C6E8F2.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"15034000000","locking_period":120,"voting_power":"30068000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"30068000000000000000000000000"}]},{"voter_id":"0x16E44d8F1BEc8fb6c6770ABE8E8EF199B7723c9a.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"27095000000","locking_period":300,"voting_power":"135475000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"135475000000000000000000000000"}]},{"voter_id":"0xA4243e13bD28fa9e0e67704E381cb98d06240C93.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"30000000000","locking_period":300,"voting_power":"150000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"here.poolv1.near","voting_power":"150000000000000000000000000000"}]},{"voter_id":"0x22B052CbBf01cfE2EC5A8424a7d361f376aEaEb0.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"50032000000","locking_period":300,"voting_power":"250160000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"250160000000000000000000000000"}]},{"voter_id":"0xEA3e3612175a894362f3062785adC133D9b98f10.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"285827000000","locking_period":300,"voting_power":"1429135000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"929135000000000000000000000000"}]},{"voter_id":"c47093dc9f12d71135b4940a0744944b7936b0d4458bc1feab0eafb4d3d1249d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":270,"voting_power":"18000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"18000000000000000000000000","vote_positions":[]},{"voter_id":"0x2929f6FEDD4897236fB97A059aaA1fe057adeB0e.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"30767000000","locking_period":300,"voting_power":"153835000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"153835000000000000000000000000"}]},{"voter_id":"0xE3Ecd1907caa757A4a5C9DA32d7AA34005681C1e.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16251000000","locking_period":300,"voting_power":"81255000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"81255000000000000000000000000"}]},{"voter_id":"0xf5597b4094058efe44fe61C8f2844823Fc566e3c.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"650000000","locking_period":300,"voting_power":"3250000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"mexa-staking.poolv1.near","voting_power":"3250000000000000000000000000"}]},{"voter_id":"0x1430b0DF64C0126c6184D2f28b1cF505f39147b2.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"19921000000","locking_period":300,"voting_power":"99605000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"99605000000000000000000000000"}]},{"voter_id":"0x1fb751200fda2aBa12BA2C254c3c02d23E06dB8D.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1508000000","locking_period":300,"voting_power":"7540000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7540000000000000000000000000","vote_positions":[]},{"voter_id":"0xC479d61faFAd7374af8eE1902d3797E8cCAb0522.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6460000000","locking_period":300,"voting_power":"32300000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearuaguild.poolv1.near","voting_power":"32300000000000000000000000000"}]},{"voter_id":"5d7e273e59ce62b306698ce7fb9a8b885264be2ce90980254c85b361d9d8d71b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"invoices.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"246428600500","locking_period":300,"voting_power":"1232143002500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stardust.poolv1.near","voting_power":"1232143002500000000000000000000"}]},{"voter_id":"pat.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6823431700","locking_period":300,"voting_power":"34117158500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"oharanodes.poolv1.near","voting_power":"34117158500000000000000000000"}]},{"voter_id":"seanvan1411.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"31670100000","locking_period":225,"voting_power":"118762875000000000000000000000","unlocking_started_at":1725956985812,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"50000000000","locking_period":225,"voting_power":"187500000000000000000000000000","unlocking_started_at":1725956931014,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":2,"amount":"2349000000","locking_period":285,"voting_power":"11157750000000000000000000000","unlocking_started_at":1725957070629,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"number9dream.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12029171300","locking_period":150,"voting_power":"30072928250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"30072928200000000000000000000"}]},{"voter_id":"e5fb81d59683c942333b8f420ab667dcc33beeea5227c19350ca0c1c6b7439dd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1089218300","locking_period":300,"voting_power":"5446091500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"75|mpDAO Grants #7 - June 2024-abrahamrivv.near","voting_power":"2700000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"110|mpDAO Grants #7 - June 2024-a0824e3043025dbc552529f9fefcde06b5c43c0ebad5d595d1f3343153932b88","voting_power":"2746091500000000000000000000"}]},{"voter_id":"ihyshan.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10055324400","locking_period":300,"voting_power":"50276622000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"651000000","locking_period":90,"voting_power":"976500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alpha-stake.poolv1.near","voting_power":"51253122000000000000000000000"}]},{"voter_id":"0x32292056970DCe4B9528d71642F765f14E0F1042.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1315000000","locking_period":300,"voting_power":"6575000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"6575000000000000000000000000"}]},{"voter_id":"0x8989964863cf4dbaedFFbb4F43Abcf54DA5F5f1b.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1410209000000","locking_period":300,"voting_power":"7051045000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"7051045000000000000000000000000"}]},{"voter_id":"0x1256E7992564AB22e332532472c916Bd8D1e1Ca7.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1735000000","locking_period":120,"voting_power":"3470000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3470000000000000000000000000","vote_positions":[]},{"voter_id":"ivanovic.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"48900983500","locking_period":300,"voting_power":"244504917500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"244504917500000000000000000000"}]},{"voter_id":"developer.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1040497000000","locking_period":90,"voting_power":"1560745500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"650100000000","locking_period":165,"voting_power":"1787775000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"90000000000","locking_period":300,"voting_power":"450000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":3,"amount":"10000000000","locking_period":120,"voting_power":"20000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":4,"amount":"1000783000000","locking_period":105,"voting_power":"1751370250000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2534890750000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"950000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearstar.poolv1.near","voting_power":"1900000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"101|mpDAO Grants #7 - June 2024-criptolaplata.near","voting_power":"150000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"87|mpDAO Grants #7 - June 2024-97c131e898ddae0f081783a3d43dfef5434e098728fed3276eeece5ab5a7a1c6","voting_power":"35000000000000000000000000000"}]},{"voter_id":"e7bfa469cc055cb12f4d90e551e5cb128fda19400da59768b0963cde89fc774d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"natcrypto.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"848677601500","locking_period":150,"voting_power":"2121694003750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"47498000000","locking_period":120,"voting_power":"94996000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"16441398980","locking_period":210,"voting_power":"57544896430000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"57544896480000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"dexagon.poolv1.near","voting_power":"222000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"rekt.poolv1.near","voting_power":"300000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"101|mpDAO Grants #7 - June 2024-criptolaplata.near","voting_power":"350000003700000000000000000000"},{"votable_address":"initiatives","votable_object_id":"79|mpDAO Grants #7 - June 2024-478f0f81f81824a1db9f1c434b73e2c800e2992069a2d0484d050a86406a4402","voting_power":"95000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"81|mpDAO Grants #7 - June 2024-herdaomexico.near","voting_power":"150000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"94|mpDAO Grants #7 - June 2024-cryptopr3neur.near","voting_power":"190000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"120000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"107|mpDAO Grants #7 - June 2024-ae1ddf13d147c6afdb5e0d53274ea31a10f12206bebfa082a231df5a6cfa82d9","voting_power":"220000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"102|mpDAO Grants #7 - June 2024-fr-grant.near","voting_power":"400000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"108|mpDAO Grants #7 - June 2024-553a5330546aa39850aa0e972bc1bec1c7018575ba141fa6f0a379cf28d46d16","voting_power":"169690000000000000000000000000"}]},{"voter_id":"0xCF6d2f6E2839ac50f49a76c1DA88f82F62d29B74.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1200000000","locking_period":300,"voting_power":"6000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000000","vote_positions":[]},{"voter_id":"eventosmetapool.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10000000","locking_period":300,"voting_power":"50000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"50000000000000000000000000"}]},{"voter_id":"davidmo.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"17578467300","locking_period":90,"voting_power":"26367700950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"26367700900000000000000000000"}]},{"voter_id":"0x36D93bAC8ffcc3af98cCf3A5A1b2588df5508256.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1418000000","locking_period":105,"voting_power":"2481500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2481500000000000000000000000","vote_positions":[]},{"voter_id":"smile143.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":90,"voting_power":"1500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"1500000000000000000000000000"}]},{"voter_id":"0x7AbAEb445D6c0036B386c1Ccd0c4d58c528AC450.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"0xcc7B864e79fA2eB1Aa43905A74815fac8Dd99fc7.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"18472000000","locking_period":300,"voting_power":"92360000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"92360000000000000000000000000"}]},{"voter_id":"0xFFaCD7e55e79fABeD8E6096A5ab325AE38A5faC8.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"75937000000","locking_period":300,"voting_power":"379685000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"379685000000000000000000000000"}]},{"voter_id":"0x26B0Bb09478A8423b53b2854dEfFb8A61A889725.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"102861000000","locking_period":300,"voting_power":"514305000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"514305000000000000000000000000"}]},{"voter_id":"forklift.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2702185900","locking_period":300,"voting_power":"13510929500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"8815929500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"mpdao.poolv1.near","voting_power":"4695000000000000000000000000"}]},{"voter_id":"zzw.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"27062790900","locking_period":300,"voting_power":"135313954500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"128913954500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"meteor.poolv1.near","voting_power":"6400000000000000000000000000"}]},{"voter_id":"nonothenono.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7002268300","locking_period":30,"voting_power":"3501134150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"50000000","locking_period":90,"voting_power":"75000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"3576134100000000000000000000"}]},{"voter_id":"0xEa36e8E31df3eC5dC2350589697dDF346Bc58E24.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1265000000","locking_period":300,"voting_power":"6325000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6325000000000000000000000000","vote_positions":[]},{"voter_id":"0x092cfF73c77a9de794D25b0088DeD0e430733dbb.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8309000000","locking_period":300,"voting_power":"41545000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"77|mpDAO Grants #7 - June 2024-1724cbdb130e5b0f9bd750f666f4fe00581489fcc294dca4ed055c90c76808fc","voting_power":"41545000000000000000000000000"}]},{"voter_id":"alansicairos.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"22853653620","locking_period":300,"voting_power":"114268268100000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"114268268100000000000000000000"}]},{"voter_id":"mathieutetreault.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5981299200","locking_period":180,"voting_power":"17943897600000000000000000000","unlocking_started_at":1717697591586,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"0x4246FF0452B95780122E84bdFfe5Ba9371E1d7a2.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"488000000","locking_period":300,"voting_power":"2440000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"121|mpDAO Grants #8 - August 2024-meximalist.near","voting_power":"1000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"1440000000000000000000000000"}]},{"voter_id":"edfernandezg.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"13261924800","locking_period":180,"voting_power":"39785774400000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"39785774400000000000000000000"}]},{"voter_id":"0xE351625D4E07D185880fdcc3a8FA6E2558d2F470.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16000000000","locking_period":300,"voting_power":"80000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"p2p-org.poolv1.near","voting_power":"80000000000000000000000000000"}]},{"voter_id":"14152d8789b96ce70fbe4b105194eeb85052b06a00c839b8b7de70928ab865fa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"66667603300","locking_period":90,"voting_power":"100001404950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1798000000","locking_period":90,"voting_power":"2697000000000000000000000000","unlocking_started_at":1733365535829,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":2,"amount":"42209000000","locking_period":90,"voting_power":"63313500000000000000000000000","unlocking_started_at":1733365600765,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"1404950000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"100000000000000000000000000000"}]},{"voter_id":"vinh1024.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"13958814100","locking_period":45,"voting_power":"10469110575000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10469110575000000000000000000","vote_positions":[]},{"voter_id":"haytham.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"35854400","locking_period":90,"voting_power":"53781600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"53781600000000000000000000","vote_positions":[]},{"voter_id":"0xF7b188d84192e23049dA2E659ddC2d79D7C85e1d.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"550000000","locking_period":300,"voting_power":"2750000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"2750000000000000000000000000"}]},{"voter_id":"a9f49c2f4c066b83c3e71d5ca3ff097c7c6a09707386298da42b52c5927a25bc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"11010780500","locking_period":90,"voting_power":"16516170750000000000000000000","unlocking_started_at":1733685503490,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"1000000000","locking_period":90,"voting_power":"1500000000000000000000000000","unlocking_started_at":1733685461120,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"test_near.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000","locking_period":30,"voting_power":"500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"10759382620","locking_period":300,"voting_power":"53796913100000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"25000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"28797413100000000000000000000"}]},{"voter_id":"oulrij.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"369566900","locking_period":90,"voting_power":"554350350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"554350350000000000000000000","vote_positions":[]},{"voter_id":"a79cee9b44db1224c8a1f8b3819309d1ce1df8832aee8bf99ba5848269eaa2de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"28746963100","locking_period":90,"voting_power":"43120444650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"43120444650000000000000000000","vote_positions":[]},{"voter_id":"marek505.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"46639121900","locking_period":30,"voting_power":"23319560950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"23319560950000000000000000000","vote_positions":[]},{"voter_id":"f627b3e2e72da7b2dd98fafa91ed7b56b658142e1e4c0a33d8147dcc081de775","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"jasp83.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"33829927500","locking_period":30,"voting_power":"16914963750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"123|mpDAO Grants #8 - August 2024-palomaetienne.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"134|mpDAO Grants #8 - August 2024-marcrypted.near","voting_power":"5000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"135|mpDAO Grants #8 - August 2024-nohbekwoman.near","voting_power":"3450000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"133|mpDAO Grants #8 - August 2024-ffbc3084a4d75ed3c28a7b6c26f44a4ffb43dc3959365d80d70a9660913cbacf","voting_power":"3464963700000000000000000000"}]},{"voter_id":"724d3919c74c7d07b1be7359acea2ba45f244fa2da476fa4988cbc1b9338f967","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5fd80e617970059ecc99bc0b6542eacc7da5288361918dc31a637918b937921d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"179119020600","locking_period":90,"voting_power":"268678530900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"268678530900000000000000000000"}]},{"voter_id":"155ab93ae7dba33a94552113da59100609c32c29df1faa39fdffcacf51ace7ad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"nickharrington.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1674280100","locking_period":300,"voting_power":"8371400500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8371400500000000000000000000","vote_positions":[]},{"voter_id":"khoacoi.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1198231100","locking_period":105,"voting_power":"2096904425000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"299557825000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"131|mpDAO Grants #8 - August 2024-dollarinveste.near","voting_power":"1797346600000000000000000000"}]},{"voter_id":"rockpath.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"282264232200","locking_period":90,"voting_power":"423396348300000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pathrocknetwork.poolv1.near","voting_power":"423396348300000000000000000000"}]},{"voter_id":"300525dbba750911263e4f330c25aa340463745b94246b866b714fa0f8ef867c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"margarine-escapist-agonizing-epilogue.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"47161820000","locking_period":180,"voting_power":"141485460000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"176410527700","locking_period":300,"voting_power":"882052638500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1023538098500000000000000000000","vote_positions":[]},{"voter_id":"170721a8d15577b6c359de7132195102f9a89c0362244038e382197d40e4011a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0xc8B19839ae371bd541F20B15c3A3CB82BFB6A6C6.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1450000000","locking_period":300,"voting_power":"7250000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7250000000000000000000000000","vote_positions":[]},{"voter_id":"pedrompg311.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10791900","locking_period":60,"voting_power":"10791900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"liver.pool.near","voting_power":"2000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"111|mpDAO Grants #7 - June 2024-c0d0c8b3bfcbc17347002733be3e2d17df833d2931c425eaa40bd7e73a4509e3","voting_power":"8791900000000000000000000"}]},{"voter_id":"0x3f6b5Df4a6fDAE2b58e3F5aA7037E68E1Eac9188.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1500000000","locking_period":300,"voting_power":"7500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"124|mpDAO Grants #8 - August 2024-3abf2c0f4d5b0d69dbc36cce64266b8ac1d06d4ba6b61664a2ac43fc809ac2a2","voting_power":"7500000000000000000000000000"}]},{"voter_id":"8fc648574b6aafaf9a966fb173827a3efcf3fc2b56bef501910246df43dcaa50","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"26695179500","locking_period":30,"voting_power":"13347589750000000000000000000","unlocking_started_at":1715956794887,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"daddyarbitrage.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5920373200","locking_period":300,"voting_power":"29601866000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"frensvalidator.poolv1.near","voting_power":"29601866000000000000000000000"}]},{"voter_id":"vandal.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6931309200","locking_period":90,"voting_power":"10396963800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"10396963800000000000000000000"}]},{"voter_id":"vandao.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10964420300","locking_period":90,"voting_power":"16446630450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"5023709430","locking_period":300,"voting_power":"25118547150000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"25118547200000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"mexa-staking.poolv1.near","voting_power":"16446630400000000000000000000"}]},{"voter_id":"9896.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"403071612900","locking_period":90,"voting_power":"604607419350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"604607419300000000000000000000"}]},{"voter_id":"zkjandro.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"658410920110","locking_period":300,"voting_power":"3292054600550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"2602594905000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"182938975100000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"centurion.poolv1.near","voting_power":"506520720400000000000000000000"}]},{"voter_id":"decollation.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"299392600","locking_period":300,"voting_power":"1496963000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1496963000000000000000000000","vote_positions":[]},{"voter_id":"zuenti.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"239648900","locking_period":300,"voting_power":"1198244500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1198244500000000000000000000"}]},{"voter_id":"kentnearvn.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000000","vote_positions":[]},{"voter_id":"orangejoe.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8705295200","locking_period":300,"voting_power":"43526476000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"43526470000000000000000000000"}]},{"voter_id":"dcc81d49b62bf89e1a07de111c32aa89fb4b6859e8bd47fa73052df9e3599244","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1884816698900","locking_period":30,"voting_power":"942408349450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"942408349450000000000000000000","vote_positions":[]},{"voter_id":"0x86874cD0aa311E56593CD045F35dbc038057D614.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2486000000","locking_period":30,"voting_power":"1243000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"66|mpDAO Grants #7 - June 2024-figitalclub.near","voting_power":"243000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"1000000000000000000000000000"}]},{"voter_id":"augie.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"90932694400","locking_period":300,"voting_power":"454663472000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"454663472000000000000000000000"}]},{"voter_id":"0xA67Dd142A1395b23607f47C1b262C973f6258E7E.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"jablko.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1852644700","locking_period":300,"voting_power":"9263223500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"4705289400000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"4557934100000000000000000000"}]},{"voter_id":"apitchdeck.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10152269900","locking_period":300,"voting_power":"50761349500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50761349500000000000000000000","vote_positions":[]},{"voter_id":"chloethedev.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"89282812370","locking_period":300,"voting_power":"446414061850000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"164292100","locking_period":300,"voting_power":"821460500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"443228017600000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"4007504700000000000000000000"}]},{"voter_id":"kaymens.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"81900000","locking_period":300,"voting_power":"409500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"409500000000000000000000000"}]},{"voter_id":"4a6f65.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"53694286400","locking_period":300,"voting_power":"268471432000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"268471432000000000000000000000"}]},{"voter_id":"adeusa.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"224293500","locking_period":300,"voting_power":"1121467500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"1121467500000000000000000000"}]},{"voter_id":"a5c354d15df4256bc5bcc1996965a7bdc60db7f6cbdd342e16583f62b63bc0ae","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":1727996056671,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"a0394de7c6bdb3fa4ae09a25853e467f3fe5223b8f4917a5ff223195018ede14","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"140234200","locking_period":90,"voting_power":"210351300000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"restake.poolv1.near","voting_power":"20350000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"190001300000000000000000000"}]},{"voter_id":"7baced7c2334e6e975e2ea6965af15fdae7deba588594049692392f985287eb8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"kaion.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"400000000","locking_period":90,"voting_power":"600000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"2586055900","locking_period":300,"voting_power":"12930279500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"13530279500000000000000000000"}]},{"voter_id":"donsober.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1299019500","locking_period":120,"voting_power":"2598039000000000000000000000","unlocking_started_at":1716481383787,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"8fe8e86771824d3880fe18798f56baf5c24640850ebdc142ba2b9760cd5718cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"47285461100","locking_period":150,"voting_power":"118213652750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"118213652700000000000000000000"}]},{"voter_id":"0x1968145D78FE9799871522a067cbc161CE5603a8.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"swissstar.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000000","vote_positions":[]},{"voter_id":"0x5650F30f719e6E9C0D00b2fdd20C7ba8649337C0.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"14881000000","locking_period":300,"voting_power":"74405000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"74405000000000000000000000000"}]},{"voter_id":"jared.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"138363492500","locking_period":300,"voting_power":"691817462500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"691817462500000000000000000000"}]},{"voter_id":"kaboochis.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"meteor.poolv1.near","voting_power":"5000000000000000000000000000"}]},{"voter_id":"0xC3F836EC06A2202af23e59997A613CA0722F35d1.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"osc.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5432906700","locking_period":300,"voting_power":"27164533500000000000000000000","unlocking_started_at":1716842243888,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"47e7f13cbaf178c66d2c12d93593513a0f406188c40e72977f9b1a4deed15958","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"43049110","locking_period":300,"voting_power":"215245550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"215245500000000000000000000"}]},{"voter_id":"cozybird.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"301008270300","locking_period":300,"voting_power":"1505041351500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"1505041351500000000000000000000"}]},{"voter_id":"walapril.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"821421300","locking_period":300,"voting_power":"4107106500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"2344580500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"1762526000000000000000000000"}]},{"voter_id":"profit2.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"601830443400","locking_period":300,"voting_power":"3009152217000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"oe.poolv1.near","voting_power":"3009152217000000000000000000000"}]},{"voter_id":"4083b50cb907509eba10b56a41300f719d341175cfb92c819bd07a4fe3efddb8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1034519658100","locking_period":300,"voting_power":"5172598290500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearkoreahub.poolv1.near","voting_power":"5172598290500000000000000000000"}]},{"voter_id":"bianca.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2556353500","locking_period":300,"voting_power":"12781767500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1448605500","locking_period":30,"voting_power":"724302750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"13506070200000000000000000000"}]},{"voter_id":"huktodev.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7164006000","locking_period":240,"voting_power":"28656024000000000000000000000","unlocking_started_at":1722119926238,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"nedlar7.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"300090000","locking_period":90,"voting_power":"450135000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"450135000000000000000000000"}]},{"voter_id":"phars.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1295718700","locking_period":75,"voting_power":"1619648375000000000000000000","unlocking_started_at":1732333528450,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"0x773c24F007Ef074CacD382be18e5857785837D4a.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"201000000","locking_period":300,"voting_power":"1005000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"1005000000000000000000000000"}]},{"voter_id":"arttrader.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"46585365400","locking_period":120,"voting_power":"93170730800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"93170730800000000000000000000","vote_positions":[]},{"voter_id":"0x12f5ecd00fe3851f4d7eB2bf77E72E3299f2C868.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"0xb5621490079D534D737B6B8837947FB376D5F629.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"0x263779E7338DEf14C431D6301F97Cc846D69C099.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"0x7844317568728BdC9475E939553A2A0446D19E2e.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"dosisweb3.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"18578826400","locking_period":120,"voting_power":"37157652800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"128|mpDAO Grants #8 - August 2024-aleiranova.near","voting_power":"37157652800000000000000000000"}]},{"voter_id":"0x6DEe4a729430078CD281988Ac76292cf3B27e2c0.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"692000000","locking_period":300,"voting_power":"3460000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3460000000000000000000000000","vote_positions":[]},{"voter_id":"0x13DF946B95ee60922257af5811423ea9dc353F36.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1250000000","locking_period":300,"voting_power":"6250000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"6250000000000000000000000000"}]},{"voter_id":"0x93857Ad03a9Ab1226D909FFa49BcA37e70e4D32d.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7959000000","locking_period":300,"voting_power":"39795000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"32835000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"86|mpDAO Grants #7 - June 2024-la-incubadora.near","voting_power":"6301000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"70|mpDAO Grants #7 - June 2024-a5732a8195200f4203a633cea3dc154b696ed628d2ed4a322f214849f2247307","voting_power":"100000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"77|mpDAO Grants #7 - June 2024-1724cbdb130e5b0f9bd750f666f4fe00581489fcc294dca4ed055c90c76808fc","voting_power":"100000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"75|mpDAO Grants #7 - June 2024-abrahamrivv.near","voting_power":"300000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"79|mpDAO Grants #7 - June 2024-478f0f81f81824a1db9f1c434b73e2c800e2992069a2d0484d050a86406a4402","voting_power":"50000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"97|mpDAO Grants #7 - June 2024-solowcripto.near","voting_power":"69000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"67|mpDAO Grants #7 - June 2024-baryo01.near","voting_power":"40000000000000000000000000"}]},{"voter_id":"21819.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"103204600","locking_period":300,"voting_power":"516023000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"516023000000000000000000000"}]},{"voter_id":"marmaj.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"106206400","locking_period":300,"voting_power":"531032000000000000000000000","unlocking_started_at":1733344985728,"is_unlocked":false,"is_unlocking":true,"is_locked":false},{"index":1,"amount":"17000000","locking_period":90,"voting_power":"25500000000000000000000000","unlocking_started_at":1733344938613,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"manyoil.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"74151250700","locking_period":300,"voting_power":"370756253500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"370756253500000000000000000000"}]},{"voter_id":"tensors.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2942857100000","locking_period":300,"voting_power":"14714285500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"9714285500000000000000000000000"}]},{"voter_id":"0xAa3F1faAa3a93Bb5799A8464b14F0FE427fC231f.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"21281000000","locking_period":300,"voting_power":"106405000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"106405000000000000000000000000"}]},{"voter_id":"nftgol.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"200000000","locking_period":195,"voting_power":"650000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"23000000","locking_period":300,"voting_power":"115000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"465000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"70|mpDAO Grants #7 - June 2024-a5732a8195200f4203a633cea3dc154b696ed628d2ed4a322f214849f2247307","voting_power":"100000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"78|mpDAO Grants #7 - June 2024-irvingzcc.near","voting_power":"100000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"73|mpDAO Grants #7 - June 2024-mrcoingdl.near","voting_power":"100000000000000000000000000"}]},{"voter_id":"happypenguin.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"261734447600","locking_period":300,"voting_power":"1308672238000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"1308672238000000000000000000000"}]},{"voter_id":"7ed4c34d7903e97120fc95415f4c68b61d4594ed6108bbacd73eaaae96eccb62","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100000000","locking_period":300,"voting_power":"500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"480000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"10000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"114|mpDAO Grants #7 - June 2024-aksanova33.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"9656a3cd3da0d65563dce927c9c184808a7c9d7d077d199c999ebe65ef526af9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"667000000","locking_period":90,"voting_power":"1000500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"633000000","locking_period":90,"voting_power":"949500000000000000000000000","unlocking_started_at":1726063035006,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"500000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"114|mpDAO Grants #7 - June 2024-aksanova33.near","voting_power":"200000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"112|mpDAO Grants #7 - June 2024-hoangthien1109.near","voting_power":"200000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"200000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"200000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"66|mpDAO Grants #7 - June 2024-figitalclub.near","voting_power":"200000000000000000000000000"}]},{"voter_id":"5d0680d19b8b51114209be84e5545049fd39055736a470e69edc8b1b45530758","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1152654900","locking_period":300,"voting_power":"5763274500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5760774500000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"110|mpDAO Grants #7 - June 2024-a0824e3043025dbc552529f9fefcde06b5c43c0ebad5d595d1f3343153932b88","voting_power":"1000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"80|mpDAO Grants #7 - June 2024-coineasydao.near","voting_power":"1000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"97|mpDAO Grants #7 - June 2024-solowcripto.near","voting_power":"500000000000000000000000"}]},{"voter_id":"0x18869e75ADdB335FeFDD5aaE02d98326EABCC6d9.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"24296000000","locking_period":300,"voting_power":"121480000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"121480000000000000000000000000"}]},{"voter_id":"0xCdDE67a6E1666a1d56BaB73DCed9bEA132895Ba9.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1390000000","locking_period":120,"voting_power":"2780000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1159000000","locking_period":300,"voting_power":"5795000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"8575000000000000000000000000"}]},{"voter_id":"67fe33da5d926910ec480377ea76d119efb39486e779db0735cdaaba11ec862b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":225,"voting_power":"11250000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9750000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"88|mpDAO Grants #7 - June 2024-100diasder.near","voting_power":"1000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"69|mpDAO Grants #7 - June 2024-odisea.near","voting_power":"500000000000000000000000"}]},{"voter_id":"37e9df77934c86417c090e62bcc174730061cb3fc1fa2eadfad96709ebc1c7ac","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9200000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"84|mpDAO Grants #7 - June 2024-613d92d562c428aa478083dc0be04321ef76d48d836610f63cf9948122d4b1cd","voting_power":"300000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"97|mpDAO Grants #7 - June 2024-solowcripto.near","voting_power":"500000000000000000000000"}]},{"voter_id":"f3e4b457a4f0dc8b7130f347b90370f2da12174c92c8e2c2ff72d3d9a07e202f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9400000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"82|mpDAO Grants #7 - June 2024-2f267735d0046f372f1cb6cb6f6c6201bd66b0c3cdf03a4f5ad9fc3877000cbc","voting_power":"500000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"97|mpDAO Grants #7 - June 2024-solowcripto.near","voting_power":"100000000000000000000000"}]},{"voter_id":"yamadori.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"42637421300","locking_period":300,"voting_power":"213187106500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"coinpayu.poolv1.near","voting_power":"100100106500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"113087000000000000000000000000"}]},{"voter_id":"rogservin.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"669000000","locking_period":300,"voting_power":"3345000000000000000000000000","unlocking_started_at":1718692127142,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"0xEe1140ab647Bf0bD4Aa9603376Ed95a969243096.evmp.near","balance_in_contract":"0","locking_positions":[],"voting_power":"0","vote_positions":[]},{"voter_id":"happypenguin1.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"245260656500","locking_period":300,"voting_power":"1226303282500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"1226303282500000000000000000000"}]},{"voter_id":"cybersecurity_rok.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"40235154800","locking_period":300,"voting_power":"201175774000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"201175774000000000000000000000"}]},{"voter_id":"0x55b8e2c4AE5951D1A8e77d0E513a6E598Ee0bE86.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"23323000000","locking_period":300,"voting_power":"116615000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"epic.poolv1.near","voting_power":"116615000000000000000000000000"}]},{"voter_id":"venomity268.tg","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"458730000","locking_period":300,"voting_power":"2293650000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"2293650000000000000000000000"}]},{"voter_id":"0x837667C7C5cB49609ed5BFA5d3B2f1bbae81d8bA.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2263000000","locking_period":120,"voting_power":"4526000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"2742000000","locking_period":300,"voting_power":"13710000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"18236000000000000000000000000"}]},{"voter_id":"takeshi7.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2229447900","locking_period":300,"voting_power":"11147239500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"11147239500000000000000000000"}]},{"voter_id":"bradrussell.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8870168900","locking_period":90,"voting_power":"13305253350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"67|mpDAO Grants #7 - June 2024-baryo01.near","voting_power":"13305253300000000000000000000"}]},{"voter_id":"0xD2F5090E322E1Ef6f4F0699Bbaf5b68992eAa330.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1173000000","locking_period":30,"voting_power":"586500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"893000000","locking_period":300,"voting_power":"4465000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"68|mpDAO Grants #7 - June 2024-3sblockchain.near","voting_power":"5051500000000000000000000000"}]},{"voter_id":"0x21F713f686fcF7b9ab4D2f144eCe611A97b15f41.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6551000000","locking_period":300,"voting_power":"32755000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"65|mpDAO Grants #7 - June 2024-auroraafrica.near","voting_power":"32755000000000000000000000000"}]},{"voter_id":"happypenguin2.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100824695000","locking_period":300,"voting_power":"504123475000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"504123475000000000000000000000"}]},{"voter_id":"0xF42Cd128cDc69bC8d1e7eacC413342064Ce07121.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1200000000","locking_period":300,"voting_power":"6000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"68|mpDAO Grants #7 - June 2024-3sblockchain.near","voting_power":"6000000000000000000000000000"}]},{"voter_id":"0xAa6f8999a3675d755d471b0c8Be8735453abE7C1.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1200000000","locking_period":300,"voting_power":"6000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"68|mpDAO Grants #7 - June 2024-3sblockchain.near","voting_power":"6000000000000000000000000000"}]},{"voter_id":"fionng.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10000000","locking_period":90,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"0xfC86655494C7B2A9bDFC014B6819A8Ed6D31fc76.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5114000000","locking_period":300,"voting_power":"25570000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"25570000000000000000000000000"}]},{"voter_id":"funkycarioca.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"125461937590","locking_period":300,"voting_power":"627309687950000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"580505508500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"46804179400000000000000000000"}]},{"voter_id":"0xe668da86f28f94F36aEb1a21F1f5fBDC681233E5.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1570000000","locking_period":300,"voting_power":"7850000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"850000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"106|mpDAO Grants #7 - June 2024-ludium.near","voting_power":"2000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"105|mpDAO Grants #7 - June 2024-marcelorefi.near","voting_power":"2000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"99|mpDAO Grants #7 - June 2024-venomity.near","voting_power":"1000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"2000000000000000000000000000"}]},{"voter_id":"0xB1ea931b49e6671f2CdC67e5704B763a244Dee2d.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"324000000","locking_period":120,"voting_power":"648000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"250000000","locking_period":210,"voting_power":"875000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"145|mpDAO Grants #8 - August 2024-d145ede2238bd103475bb8b173a2a48420d0a9de14917f0259d71cdfae77071c","voting_power":"1523000000000000000000000000"}]},{"voter_id":"15eb7941392955eb2b0a28fc9bdafcd94c8d7526b140005dbaac8be965a1d204","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1911315010","locking_period":300,"voting_power":"9556575050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"450000050000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"polkachu.poolv1.near","voting_power":"5756042500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"3350532500000000000000000000"}]},{"voter_id":"ledelegated.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000000000","locking_period":120,"voting_power":"4000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"210000000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"76|mpDAO Grants #7 - June 2024-latambuilder.near","voting_power":"1200000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"108|mpDAO Grants #7 - June 2024-553a5330546aa39850aa0e972bc1bec1c7018575ba141fa6f0a379cf28d46d16","voting_power":"700000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"77|mpDAO Grants #7 - June 2024-1724cbdb130e5b0f9bd750f666f4fe00581489fcc294dca4ed055c90c76808fc","voting_power":"350000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"94|mpDAO Grants #7 - June 2024-cryptopr3neur.near","voting_power":"300000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"92|mpDAO Grants #7 - June 2024-musicaw3.near","voting_power":"80000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"95|mpDAO Grants #7 - June 2024-edfernandezg.near","voting_power":"120000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"71|mpDAO Grants #7 - June 2024-anarchychains.near","voting_power":"100000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"98|mpDAO Grants #7 - June 2024-fdea0a6bcd48da25f783feb9b66627698cb00a7b34f064eb3ff59e3367b625de","voting_power":"420000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"83|mpDAO Grants #7 - June 2024-733770575b5ba41692fe56bfeadb98cf0f46492dfa608027ea6e0cc8cdf832be","voting_power":"450000000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"85|mpDAO Grants #7 - June 2024-fpsgames.near","voting_power":"70000000000000000000000000000"}]},{"voter_id":"hannahh.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"237185100","locking_period":300,"voting_power":"1185925500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"127|mpDAO Grants #8 - August 2024-venomity.near","voting_power":"1185925500000000000000000000"}]},{"voter_id":"0xC1a7E732413D919333d6C9c42b02E29deD5c84E6.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"541000000","locking_period":300,"voting_power":"2705000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"94|mpDAO Grants #7 - June 2024-cryptopr3neur.near","voting_power":"2705000000000000000000000000"}]},{"voter_id":"lele.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2465311826400","locking_period":90,"voting_power":"3697967739600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3697967739600000000000000000000","vote_positions":[]},{"voter_id":"0x5504E7AeA0cf0582f7db6fD9C810f3810425a6c2.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2438000000","locking_period":300,"voting_power":"12190000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nacioncrypto-parceros.poolv1.near","voting_power":"6000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"6190000000000000000000000000"}]},{"voter_id":"solari.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"250000000000","locking_period":300,"voting_power":"1250000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"idtcn4.poolv1.near","voting_power":"1250000000000000000000000000000"}]},{"voter_id":"ea4ddb1c9a3e1a65438b5cd1069f8b9d324601d9f80cc207fd21aee433a129d4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"200000000000","locking_period":300,"voting_power":"1000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"frensvalidator.poolv1.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"consensus_finoa_01.poolv1.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearvietnamhub.poolv1.near","voting_power":"200000000000000000000000000000"}]},{"voter_id":"misfitsmedia.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1750782461340","locking_period":300,"voting_power":"8753912306700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"2500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"dexagon.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"308218130100000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"coinpayu.poolv1.near","voting_power":"2000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakely_io.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"shurik.poolv1.near","voting_power":"144011912400000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"oharanodes.poolv1.near","voting_power":"500000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"spectrum.poolv1.near","voting_power":"589967769000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"711714495200000000000000000000"}]},{"voter_id":"68cd5e5436d2013eb95aeadf595d889a0ae79ea00a86996d64a3ca8f397275da","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":195,"voting_power":"13000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"13000000000000000000000000","vote_positions":[]},{"voter_id":"0x34a9E0fc6dBBd4144dFEB3b6895900f519436E06.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"624000000","locking_period":120,"voting_power":"1248000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"451000000","locking_period":210,"voting_power":"1578500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"123|mpDAO Grants #8 - August 2024-palomaetienne.near","voting_power":"2826500000000000000000000000"}]},{"voter_id":"fedb6b1f672872f7d1aab1ea9dd4a6c1b7781c9f23645ded83307acd071e2a7f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"0xCeFF651357EAC55845e3F33a5623e23C5Df8BB47.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"500000000000","locking_period":300,"voting_power":"2500000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"1000000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"1500000000000000000000000000000"}]},{"voter_id":"0x0dA891f618e773f3b765bcE938c8DB1c55D2A588.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"90782000000","locking_period":300,"voting_power":"453910000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"mexa-staking.poolv1.near","voting_power":"453910000000000000000000000000"}]},{"voter_id":"cquang.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"18429890800","locking_period":60,"voting_power":"18429890800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"1720462600","locking_period":90,"voting_power":"2580693900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"21010584700000000000000000000","vote_positions":[]},{"voter_id":"0xEd88424737639e3c891F3f2357E82f33676d98C1.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12315000000","locking_period":300,"voting_power":"61575000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"61575000000000000000000000000"}]},{"voter_id":"27904ea9d2b34fd4cc2a7397b0331ee42526fcb368dd34e2e6a9498e3d8b20cc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"30811635900","locking_period":285,"voting_power":"146355270525000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"146355270525000000000000000000","vote_positions":[]},{"voter_id":"ac426054401e2565ad5083b43a1f832e02701e86a83a586d57581bef4ac9a67e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"0x8c7b8474dC370703Ac10D95d91e8f4D26ce41797.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100000000000","locking_period":300,"voting_power":"500000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakin.poolv1.near","voting_power":"100000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"200000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"iamcryptobro.poolv1.near","voting_power":"200000000000000000000000000000"}]},{"voter_id":"palomaetienne.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"667879810","locking_period":120,"voting_power":"1335759620000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"123|mpDAO Grants #8 - August 2024-palomaetienne.near","voting_power":"1335759600000000000000000000"}]},{"voter_id":"meta-pulgas.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"174540033280","locking_period":300,"voting_power":"872700166400000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"10843520810","locking_period":300,"voting_power":"54217604050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"926917770400000000000000000000"}]},{"voter_id":"kenrou-it.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"55008403300","locking_period":300,"voting_power":"275042016500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"275042016500000000000000000000"}]},{"voter_id":"345329086d811eb171962ecfcfca5e95752bc5d21d1fbb90f6a2242130d8aa1c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1931646300","locking_period":120,"voting_power":"3863292600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"3863292600000000000000000000"}]},{"voter_id":"vinc.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"75590282400","locking_period":300,"voting_power":"377951412000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"377951412000000000000000000000"}]},{"voter_id":"mizu.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":285,"voting_power":"9500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"43927100","locking_period":300,"voting_power":"219635500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"229135500000000000000000000","vote_positions":[]},{"voter_id":"babami.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"305751800","locking_period":60,"voting_power":"305751800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"731186000","locking_period":90,"voting_power":"1096779000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1402530800000000000000000000","vote_positions":[]},{"voter_id":"lucasdeprueba.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1121063700","locking_period":300,"voting_power":"5605318500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"5605318500000000000000000000"}]},{"voter_id":"hongeda.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"17000000000","locking_period":300,"voting_power":"85000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"85000000000000000000000000000"}]},{"voter_id":"gridmanservo.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"88963850000","locking_period":120,"voting_power":"177927700000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"177927700000000000000000000000"}]},{"voter_id":"0x71610bC1aCF75d39fCf962076D97bE17cd7105Ac.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1938000000","locking_period":300,"voting_power":"9690000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9690000000000000000000000000","vote_positions":[]},{"voter_id":"millyrodriguez.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"446738100","locking_period":120,"voting_power":"893476200000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"353551270","locking_period":300,"voting_power":"1767756350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"2661232500000000000000000000"}]},{"voter_id":"0xfc10B4f288Dfcc996EB819021934536095a7Ce90.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"725000000","locking_period":300,"voting_power":"3625000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"124|mpDAO Grants #8 - August 2024-3abf2c0f4d5b0d69dbc36cce64266b8ac1d06d4ba6b61664a2ac43fc809ac2a2","voting_power":"3625000000000000000000000000"}]},{"voter_id":"mp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"105798270600","locking_period":180,"voting_power":"317394811800000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"4831000000","locking_period":90,"voting_power":"7246500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"profit.poolv1.near","voting_power":"150000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alpha-stake.poolv1.near","voting_power":"100000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"avado.poolv1.near","voting_power":"74631311800000000000000000000"}]},{"voter_id":"bef43bd27b338103ac85d2b0387fe2412306b9800877e66331e3095f36bb5b77","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"151929000000","locking_period":120,"voting_power":"303858000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"303858000000000000000000000000","vote_positions":[]},{"voter_id":"0x137c265E744687bdBC897FF288d2F94C42b62387.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5658000000","locking_period":300,"voting_power":"28290000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"28290000000000000000000000000"}]},{"voter_id":"c11e452e9d223ada5937b4e867a992fbff3dbc8113a3bef712ff1f84e707d052","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"23000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"cristian_nacional.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"500000000","locking_period":300,"voting_power":"2500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"41000000","locking_period":30,"voting_power":"20500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":2,"amount":"50000000","locking_period":90,"voting_power":"75000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2595500000000000000000000000"}]},{"voter_id":"juanes.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"500000000","locking_period":300,"voting_power":"2500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"48000000","locking_period":60,"voting_power":"48000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2548000000000000000000000000"}]},{"voter_id":"blntmain.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3043797600","locking_period":90,"voting_power":"4565696400000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"210000000","locking_period":30,"voting_power":"105000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"122|mpDAO Grants #8 - August 2024-289e3d40eaaf7df42a14f468ad0ab0db5c1fe5b8a9c5141ae6ca31734481f46b","voting_power":"200000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"blntmain.poolv1.near","voting_power":"4470696400000000000000000000"}]},{"voter_id":"angie_pao.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"500000000","locking_period":300,"voting_power":"2500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"41000000","locking_period":30,"voting_power":"20500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2520500000000000000000000000"}]},{"voter_id":"0xa2d237ecF8F29689Bf86d72f97beBe9EF85220A8.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"34643000000","locking_period":300,"voting_power":"173215000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"173215000000000000000000000000"}]},{"voter_id":"3e4cee760d5da969b8ec3f4fb9eb8f49a0b116a23ba6b34ee58ed5fd2825c063","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"589000000","locking_period":300,"voting_power":"2945000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"920000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"2000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"25000000000000000000000000"}]},{"voter_id":"0xA802EedBa8C8C9959cC7cb47CA536a06D485DcfB.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1506000000","locking_period":300,"voting_power":"7530000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"7530000000000000000000000000"}]},{"voter_id":"0x1497848AAF8F20d7F4e32501FF3D240e388Ba235.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"91065000000","locking_period":300,"voting_power":"455325000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"142070000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"313255000000000000000000000000"}]},{"voter_id":"27d9ecdd62122688ad5f957b75b7e49d534a09990ef4cc51a792bff893df5732","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2869ed8b3674730dd29cdf01fdf29005c85d8adce6b7cbd8b958f49de445a6b0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6e57fb53931fe3b39af8c654587c1336a9a1e421edb6198c829ed61102ff125a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"5439daea621f0c5a5f845d19e779463934590b4f41b683f1f03e4ea03222006f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"122|mpDAO Grants #8 - August 2024-289e3d40eaaf7df42a14f468ad0ab0db5c1fe5b8a9c5141ae6ca31734481f46b","voting_power":"20000000000000000000000000"}]},{"voter_id":"40a6d21456433e6c270130d72437460019245779582d477794f1bdd57ecb6a2c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"34000000","locking_period":300,"voting_power":"170000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"119|mpDAO Grants #8 - August 2024-wuipod.near","voting_power":"5000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"140|mpDAO Grants #8 - August 2024-latambuilder.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"50000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"50000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"50000000000000000000000000"}]},{"voter_id":"080e6108d06914a004453c4f849897417cd87579688d316ac53e3c46a3a0197b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"551a3a5188be41e7c27af497a6b786f6af33ba43c58e9106a68fe99134f65fca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"dc046584136b3be4de731441a95c2a602c25cf006f37b783e340b916a597994b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"79f4a7a847a95acb0ee11959852bb76d30d650b878c96a136688e8aecd1b83d5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"bf80de337d4ab1660da7b7f4b843df1380e166fb923d175a18d372263fd09280","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ce231ad89a500d2641cc4b71ae6400a4a9522bf263b3c11900a26073cc126f29","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":135,"voting_power":"9000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9000000000000000000000000","vote_positions":[]},{"voter_id":"4f085a61ce00d684798f1e83d0e438e9f1be98622b33f1db512566c554268663","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"871d7c902ab362e6c777a3fe7b702b0077b174a404c13d6e551a47b0acf570a4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6ec6bc9dc928b72b4363fb7cc5c3abe92f810a3b612dcc457d13ee696a78897c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"3000000000000000000000000"}]},{"voter_id":"ccd9f3cfad712e6f5fddc0a7c8935be20083824a62f780a49a1802f8d8ca0358","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4e283f659382e0611553695153424adb66e6222e0ee5a024ed98e8962a20900b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"465d7752c059302ce8eb9ec94c0141d650e072ad20fa6eeb304841b1d3693a0e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"8d89586d5043e09131c2536b0ea2624e6be60e501d31042d77810e3736cbfb2f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9b62c473cf563f33409cd8de6c95a7aa50e36fab9ee3ae665c06acb4e3d3ed41","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"82c358635147b474d097f8c8af8f88d1ec07fa7fc300ca461004e0869ccad68f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"145f614111e81b7e43cd133599d63cd5b2559a15b435de66fb14cd266945a29f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"724d617b38099343899ce0e774ca65a8161d1df6d64ab41c689f618a881c7c2e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"37488f54cd9af0e9688ce56e13f026197437402ba0038cd5c929d1f2f1e15573","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"27c783b47b0155afceec13739ff7f48c25fa052d94dac9d29905a81c97641187","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c9e350fd02b7f51b3789fc142896ba8f59732ea7c4303e3f5ad38377f9b042c1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"ddb1700afe3bd55f34f6daf7b60e3c17946eab8e6d165ef72342c8fcb83ed48c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"acc95270fb0aca46d0e43a8e8b67d8542aa07a9ae4c960e0e22142a58db7039a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":240,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16000000000000000000000000","vote_positions":[]},{"voter_id":"727175ee48957b652c4eb9e1f3386e5ae4b1e04fb90a920922741364216336b4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"3aa31f123dbcd4623c2242403d92da66549f137cf36076ae846604483d914f70","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"509eb55b76a82eac23605481aa402bc9203d6a44c378a13bde10b6639b43a50e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d04e08aac303494787086c069d5610cb473d1f89085a4fe801378fed9fde9837","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"56e80825d408c2c9dda78bf1f02be638678b65d672752e8c9716d2f40520d983","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d6254335ff5aebd172073d28a1328373f2a55c8cd7e3b1e6a4db00cfceeeab43","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7b5b78c071c8f8381752135e3aab8f7db9d000224e6bfba092a0d6a4265f99ff","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"15c3596cf7391ccc414095e6c6275fd1df3b21b705d8c9b3ea9d86a2d74df757","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"45eaf934e0497dfdf044426aba4ea2a71698747054b0026705eae32ae08fba82","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"30e156790e33afc94d79e5a011a86fe321df75b290cebd41128d9475ea3a798e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c4a6a8fbc679ba0178931f874f6c8889a15293715e62302adc82a5056fe56c52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4df8cdf0c996c60267782f1ea4f715b4457a0e255b64444b7667c5802e3a15e4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"9ad0acfa09155485e83b7ca2fdff74778a5213f3a1fc458ac124006730df5288","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4c96376bd93c70a029006ad678dbd0bd23c9581c0826b50f49e18355de6a4624","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d8db0f4398c25971a15ed897df6952ac56ef7f1696e171b10f0a74b3abd52c63","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f0e6a55316073c638b8fba4768aa10a44569be63afa4bad08f7900a98d1cefe7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"600f83be2d72903dcba587f44b9c23055ce944d028a7a2bb1b3477347ba1f9b1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"28000000","locking_period":180,"voting_power":"84000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"92000000000000000000000000","vote_positions":[]},{"voter_id":"b9a6051bf04d420d3bead6eae864f9625738035440ef98d0416d24fce4b031c7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7dd3535ece7b1272c91009f1b64c146cca76c2a33d2bb45850ad6acd3cae641a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d150624872f14dc33334051fe65560eeb3bc29649dfcda1b4378b0ef2e5bd858","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"45ddf8c502c4d473262e48e15edca49764fe287ee7608f837adb9ac4451e6d54","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3d910f506564edec55243439dd320e1cccc9d974c8bbae1c3f84c1a624b4d0e3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"d60246859abb16dfdfffa0f9a8853e151aaec35aaef63f6a5e779e2816f4ca02","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"40fb70571de5befb4288d1349e748bd4f66673eda7ebb2414edb0f08b420d048","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4cd3bd3730d2170fe8a08d8bcd8a8d65caa6e70d4dd9c21fac3140c0ceaae2e3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"28f019d94ea494bc9b6fb6f80e1fc9b9e1f64cd3f01a818dcc110df215c12c51","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"df6af62cde824f1107570bc89c29e9ea77ed7cdc90946851e79c5cb97d319bd3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":30,"voting_power":"1000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1000000000000000000000000","vote_positions":[]},{"voter_id":"b3c6d1641621bdf7d6c5dfb5ee79b6d4a7db01e0e3e00b51a0a8196b593e128c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"cdb63c30bcfe7f8639be1f4450b54fb3c93dcc94d6fea4fac2a817c19beb6e9a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"d58324802e2d1b14768c23cd97ee96b9d07f1998c949d7086b2d0bdbfa2f2044","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"126d31434377f67c1d9239c4ee08a9f4096b528a32d07fd3392c62ce57668347","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1e61b6b2f78fe3183e1d1e8c84653911175e1e4c7e513317522318595d3bbd41","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"879685fac06351252a970f57a7e97f080af01157a48c615b62773a58dedc8f21","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"21bb7e4a279588b15caf9f8f2c6830b0977d05b7f7eed520d9db4823ca8d75ef","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"51de4a543301f6a463d38254610d240d4250ef4839539247ed5a84dd4df6dda6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"bf5ac95ee86e9cb3bb3ec2cdce2f4ee6960d0e04a768644127ed308d62093f53","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"adcaa3c13e241dfeadb60395804319a8eac4c8e1fc7a2f10af7044b56ae958a9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":30,"voting_power":"1000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1000000000000000000000000","vote_positions":[]},{"voter_id":"fdf274f98c681f001c70e3c7b1cc07c20b30540a45df4a494b8a570522bc0051","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"3d2c4a4b8008e32675af08c2291eb71ad0152368d0e9ac0388568590e488605e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a72465717e9a01592dba7417cf3286cf6ef5fe6f566e4b7618c9a325e832f87d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6de9ad273eb4cb144933aa96adfa2d13d2972f1f28149ebe8e576315314d33fc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4d247b55e9c962cc0a91e176cdc203cd29793fdb3ed9929d35c94dea04c46846","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"94b993f2e816c9df4498513dd1ad0c0d5b4faba22450a048508a90ed5b322033","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"635dcf64c3f388cc28f201f0638a1fd4902ff06b9d38a373fcbfe8d31876c073","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"69f814b94f50e0103dbe6188143f92ed677249129e2909081bdf9d350171ee92","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9ac5f9a4826d44cab50a4445c1c5661e53354dc5c9bcc2ace728ec8bbb9fb0bf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"0628b0e0b88939a9f0dd7d8090ead5a44444249e1a02fbb21c9ee48bcc7ab589","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"1deeef63c1a662bb80dd272e9b1592441177abcca0a014b98a59be9c3267f65e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"61e62c1d6a197fc777aa86cdbd7900090573bdb164a896220d676fe893de62f0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fb721bbd98b3314881c3221790ecb609b9fc9e0b03bcc3b9397bc661f7998d0a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"784c13604c4ee56b6f04b3ec81191669afb4feffb37addd54c0533999288a966","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5a7e4cd1c0807e267673c87c8c1aafa838238e081e5bc4fb3eb74b07157cbd48","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"032822c2df35abd5d64267ac3646fa5cbac384931ea8eb910d765c3de5f4ee68","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"64265e3de75158f61b9ef55c4706cfe915bb0e2f93612a28f68fca4ea3dbadda","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":210,"voting_power":"7000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[]},{"voter_id":"0aea9dae0b824a5b1ddffc82a085525e272b27604d7a23e86273638cb8bccaa9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"25ed418ec4f404b648014a7a67132185819133130e342a20270ea0bcb38423d0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"566333ac4be558d078caae7e9f03c229769ef622d526f64d0329288cf5ed3e64","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5e615ab58113cb49ce825e9e8b03970612e7989d85241e03ebf176a8031dd03c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"29dc126b65387ce46a7c310c66e54de928eca68d5a5105df7e2407484e89ac21","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"fe3bd303add191acffeb5c9e68c6180bb73ef457011486327c40fbc210e1bd44","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"12a7d19c45d66f8ff9ce283472113db8cfba5b02c3d355f1bf99e0b9a9d3ae12","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"bf4ed5f03e7250a191193e90ac855f2cd10d6cd6a4252ff85ca9b25a65e886a7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e3119c5646d65b71b93c2eefd0ee7e9c04ec4703230394f7cbd5180dd87bfe05","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"31e6e8ec45ba36b296f72527326b8bdc3dc4cb5e599f79aaef259c6157015510","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e09601a6d8a9aa54d386d828decea23618326f3f8d03e9c74777525d36b4dda9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c8a0f58e6cdd59193251586eef3516144b6ca5b6d65145d3ef51637b6fd3a7bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"41a6dbc79d3e999b6dd61446e7d6b960d8b91567d63144834bf5774cd755d14c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"64bc5f956a96ea17b4ad8afedecba9da9afda7e15e21911edd87a01208cf17cb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a41f794e9a12a4c7bb20e50f0e4a90a8f8954b005153e9d7f0155759c1c556e5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f87f4c6759572dc6791bc40f32f43d92be0b2e11898b0351fe489db89a21d941","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"17365cf3621fc7f67a1309721c23090f61b3a56055b25bb3ea46eacd5edf115f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d3d94792f5c9725ec20ef667ed79b6dc1d19375ebe4d8088b4934feee207c2ea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d103904336958830b76f2f0be437c2d4012fdf9b7f7c0a820403fbe0b2df118a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":300,"voting_power":"40000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"40000000000000000000000000","vote_positions":[]},{"voter_id":"b52167c20ba7e35decd8cb9bf835af742076f3388a1df1dbda2ef4f65d91bb7f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"fadda6343ec00cb11386628439d387f14233b54e5bd6340e3b2b06d264899ec5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"bf6b208fb2b64889932936f61be74f08d24d42ece2ba00183f3d76f10239b98b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c6348568406a803ef2a0cb907bc4d82f40e02d331718b0e7f56e0f7028010056","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6b4bde35f494dbe6b8b6592ed9347fefc612b354e0602ea18dc1a4b54fcda75e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6fc39b6b6d644b3eff8d85a9ba5f5cb299b52536687a362e04312f04a7ab0ee4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12000000","locking_period":300,"voting_power":"60000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"60000000000000000000000000","vote_positions":[]},{"voter_id":"bddd78c0d1c07bdb7b19af336de2dfeaae85989ccbaecf3b921fad2703ac0be7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"50108439a98338304ce9636d91076eebbc2c985edd8619afd37c34eede2d3655","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"821924554de471723ce40bcaa6cba15ade3457af1d7ed400ca4a087822fb8415","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"ffe787370c5814bfb5c8a4e8182ef6274c08a1c5a161f6db5fa5373af629d105","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3e51d1513014c4f048ba22f71c941155d63012062c10927e4d23418acb972fc6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"9d1dceae30161bd8abb3003ebdc2a823f8a6d48f8f9992a914272be21303d6cc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6424f1549815b2d8998adadf36298cfd9767521bd5041bafb23c8ba47af240dc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ad7237013330c862c5f80b6dc35a1e8bd010a6e8c286af8f23373cd81cd52ad6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8d90c3359d7556f72ebb7947251370dbc77a2a09945baf7e1c1319520267b808","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1cdde58faf7ec2e95e218bfb5c595bdde431f86071703b36a5e281e6ffe0259a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5035c53bc6be0c600ecdcaf7b62dc6a94fa3d9aae167c2a66d40eec4e2044b24","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8acef5812594f20a9036819abfd6223e355addb393b0643788e046db02e973cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"13360750","locking_period":120,"voting_power":"26721500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"16721500000000000000000000"}]},{"voter_id":"8a7fc02d17e2be9903ebb4b399dafa0867e4b9577b76ee07cac347b291a1f037","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b07568896b9db361abb53fe69ed590d1150c1bf73af14ba5bf7e6c202c6a647b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b510ab77eb2855b4990bd717c81f4c33e09ad7b88a6c8bcf9b9c12107ff681f8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"74b8e0a54db38de6119c53e9e69221cd6d1d0396d3753298f35274e7425f88e3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d4e22847e7b0de6ffd12cea613c78dfb185e9b806cbe014b3535cedf93bf6b6d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4c5bad1a24ca50f884c33d95d167e4660e9df4d101c6bb8cf92f909ce91ae055","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a189bdbee8efcf4b24faf7e9a942e1de8b8a4cfcc87abf48bb9d20004a24231f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"342817a5eb29a5d21773b90702d8b2f91571fde1d81439248e62527f0ec45f11","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"cc84c5ae29a5235bb61a2901726b7577c32cf6852134e4756a52f279dd83f5b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":300,"voting_power":"40000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"40000000000000000000000000","vote_positions":[]},{"voter_id":"25ddcc13fba3e88679f74a5b17ff996e7ec03ad7545f74bdd1636b2bfa453010","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"854c054401631858556be5083fcccf159d48edd8636cb3b79ba52c6057acadb3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"1aacbea312d4197b0113e669a7b69075e6d03562402e7f7a504eda02740cbb56","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b0432ae83eaca897ef4bbdd0bfdef1d85dc663320eeba22650e2dd6f4826ea64","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"3fbc1a6f724071613889480d9b9ac30ea5c834f94c99195164b6cabf2b45843c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8ff8b942169412f9e77f9285b7987c6529c06680231488e254dc6c6324454468","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"241da5c7cdb1e6e1827a71b832d1c20f039e66a759152df2c7b7680a3965b7c7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"dc79e82f7b1f6a2d72ee59db296d0f2e71607a842f06f74bb2df7f6d2190a47a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"29725629aa22082c6bd7381f27c60bb5a5cde8256813f205455e5cbe417bbacc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c02f72947575dd33b24706f80a66e727361e805180b4a24de26db3c207b71437","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7f7c40fd9cd0ba99a934f6c6e0bddee27fb2f2719a3c81b6a1c892f6bd5f8244","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2228749d4a327c1b4ce63b4d2d1d900b2bad5e778858df27f3bcb46468b16914","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ace8c16bc981fdb2f9e8717ea84afb896b30cb33591e11aad48728fc512a7dd5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5c2262ab1caaa245a74e6eff6e0c7fe9dc11be9ffa83953df15983964a511d85","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"1711058907148abafc17d6b2992c739029368bd60932e278f340eb8eafbf2d39","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"cc4668f6804c5eab5cd0fbcda10f12eb2e7d42611e6f5bf4d8b211b7bc549710","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8dd96458ee039a98fc1bbc9dd1318c52d84fd0dda34af7955367dd4ac889a61c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2715d97fc5bd0357834e083bed8b734f55d38655df4267ccc39f088da4837c7d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f36fb70ebe8b6ea903d31f27c740bd55efcba15f8514968d98b479ed408fd2e6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"126|mpDAO Grants #8 - August 2024-5e85fef96bd903eec08d1f59fabdc524d0ac13f44c7a1e08e43de9a01a62a11c","voting_power":"5000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"145|mpDAO Grants #8 - August 2024-d145ede2238bd103475bb8b173a2a48420d0a9de14917f0259d71cdfae77071c","voting_power":"10000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"140|mpDAO Grants #8 - August 2024-latambuilder.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"709a48e088e2fce23feb548f488ed76c03d7e6fa20aaed60d866f4ec855b1f9b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"eb562c458208824d6931a32326e2d8aa02317aa44f3e6d352346d51ad172ae23","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"797d81ab560875d044dd525113c326482fff507ad3ef5c4cd88038841152a8a4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"b8f64970d4ad1dcb0a1b055841669e13d6c1f3415b0e97c92c0639142e45b7b6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"de8696cd0eac0f7d0967acef1a01bc8448f5c10e02a19143a6eff2c070f2e164","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"b941bf312c36f1cab1f9772988683a0be8c2f71d793f0bad5267a09fb33a96a8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"992a128740698ea70168fa1c28e1697ff08c30705d8a03866ad9e18c9a42f2fa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c5b42afda74918ccabccabcded6730385401035af8aca25946c036a1fbe40680","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"137|mpDAO Grants #8 - August 2024-criptolaplata.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"383e360624305faa2979807b6209d1c9720ae26ecabf23a97b989377516c3e92","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6e5bf40489b5db158fcea08ed48b69d5e0f0671507c8cdf40864529d940bd422","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"838cb5c7a7e6a974fb7103275ffb5a6b365d9693e7d2ca079f4dcf4911d1dcfd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":30,"voting_power":"1000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1000000000000000000000000","vote_positions":[]},{"voter_id":"95b69d7289a749ecf14bd875ed7b19b162aded7c928c2ad0e1ba575ac9bb2130","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b82bc37572d5c4df564aec9df527d5a77834f896efc349ef6ad53c073b4e2993","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"e55e71330f336344cc8d335ab945bb8e7af0106e44128226f5218ea3a6a8f69b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a43d454b3e82939a66ded3afa2549fb9654ecac0bc7f82b21557aa52c162191e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a63976644520283c719398ae6c91d00ae1606d2327ad351dbe982fe9fdb0ad7a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"574acb8fc04b1c3ab8ef36f9ead301e43101aa9d7da813bf6b9bad88c1e3f345","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"76581563d230f311acdca2d86f66d2cde14c4f73f9ea7660f8e0512a115b0902","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8b0ebb3093af316bc9af21fa51e9701f662942b44723118260de7bbcf1a27fbb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"1f4522ec761f02eb239eba4010fae0973d3f51f806aa625688323b6fbba68d76","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"06c40f955f3a998c83036d60892c51b8005779455bf669ff811786cb51f4ba4e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"pardaox.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"131|mpDAO Grants #8 - August 2024-dollarinveste.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"73691fa9beb8985f59e1f34c7f071f9eb4a2949a3631a2e4506042be629f9120","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d7fa30ab2d1c683f7305d7089ca68ceb47ba88efaf10e0669adc7b2b4c7bf1bf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ba827e34f20b3688d91bd7214c21f7f54544d3e822a5d6a2848e8e0d0db523b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"01e03e5d247fd1d5fec6126619c09ed61c95189cc9d96d43c061296e71f855e6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0ce15fbdc5e027780eab5616ee28e4054d47e02f82e7e64b8b14d59a5d39f256","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"3ddc62d20361b09a3cb05ff8ecf98892f7c4463fd2e45effe9ee98e42dfc4ca5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":300,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"96556b0e7d0995242dc09d9131906e3477ff134de62d9d98ca92a5b4abdfea78","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0x55f8832e0012508a4e96dfE4FE0Ebd643a0EaDf0.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"551000000","locking_period":120,"voting_power":"1102000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"123|mpDAO Grants #8 - August 2024-palomaetienne.near","voting_power":"1102000000000000000000000000"}]},{"voter_id":"3633caacd5cbbbb750c21223879cfff43f38393d99afb12cec8c02d08858ac66","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"2126bdcdca813671f169f5d2f097f33943a9fb4fa4f623fd1ef121a742ee58a0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0e4d0d7b95f032275189a57bd986e5efa627c7df6ec218f3535fe2432419a3d5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"1fcddb18fe0a004a8d28c6f5e0bf852c21d38e12247ac1cab12bfbbb92e88ab9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a62ee42e81bc7d418c42c51f6e960261521c329247fd79d5eb924598011841fa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"70c5332b463ac242414a50569d5497a90a3ec0aa6ea631880cb7ddd0cd0f2b0a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"1c77b7bf771188383374724d3da5c76970a2a8264f2d57ecd07fa6e062c98361","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"1e3a0a7b1ac2a3dd8039f15ff082687ebdb6655be9fa9c73232da7db898c6ae0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a376a2a5c4d3c3f48c63b7f5b026bc49ef052ca6983f581caa9a5ae79c1958af","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"374dfec531a1274099b31c8c0e95b97764fd74ba8547ddd25ec7fe2e248eedfc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f2c7eac39ea0e049d95489ecca8537a6d9a9250f9bcfa94b1ab1e46e3b3fe78a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"043cc3d656976dc43255fe05a3f096a3f5dcad9aebc505722a61dd34b09145c9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"b6c4a9ea99037c5016352f9e38d631b1c71fb7e7f85f68ee7b3795392027a8ca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"44004e9a37d73f76f4438b2d81551d5d84a5cee477152599f77ccc75a1ffe71a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":120,"voting_power":"16000000000000000000000000","unlocking_started_at":1730684117890,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"6d591903a7eb29a274db75bc836ed7238905564f2f159f037903fd7f4994b64d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"23af65399d4308b87bf7d025d0d754953981a3768262aaeefa4fc8599004655c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7c1f396dc92b40c9f147aba123f9dec892280d0c9c89de8aa85863150d637db7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a53abdc78a549af399d29c11b4d10f40e370c61ba57452e6e7e105e8d34074b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0e59b727b425fbd59713976d554c7a4b61e9dbc87a9258fc2dab03fa977f07de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"421af233e4cce7391ff3717a29865831bc7783b7c475c75db193e95b7cc77a11","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"da6515ecacac46fff7ce58aeed698a716f5d2a77bfb6e01e378a5fe2a280645b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"0543ba6076365770e1fc112628b940339b7d0093e955b9226b022b5cf2061214","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"10ce1430d68b7d0734e6be6e98e6a7e0d77f4377a2881d04c47626f10165aafc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3d990fd769cede27d9997be214879a709264e83011e81263839ffac64cb48077","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"cec1dc05651fc81257087923d5500aeb4fcf73bafc3196cc0a7b08ee8e89d9c5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fc448953e31f51dc0830bc616f2870a2e8a8d1a30712b271d80eb1de83183029","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"518a04e19c9880ae8a8d23cf377eae98c4851841aac17381bb6e1bd05e681839","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8332370664fd8ab7553209000b17d0cfcf09f5c496c28c849e5fae0b356725c9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f02609877a26b5a6330a2425c723cc543fb6d1877a9787ab28c456df63428227","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0x87242d1A0C2A35260A500524903e2F7fD6DdBA8c.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"14200000000","locking_period":300,"voting_power":"71000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"124|mpDAO Grants #8 - August 2024-3abf2c0f4d5b0d69dbc36cce64266b8ac1d06d4ba6b61664a2ac43fc809ac2a2","voting_power":"71000000000000000000000000000"}]},{"voter_id":"a754373922d2facc53564d06d9c3ec90c6bfe65d3d0274a48b83160ead333cdc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"bb8df3e665063dc3d45e04eaebf021fa44872d6932664c2711e77f361ea7e057","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"e52e3366a5a3896cb50fdfc959eaaf2f4447fc65eaaa3e422d75a2d1e422b39b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"eda933687deca3faa0f7dc0b0f5abeaab0735863cdad0ced8505f40585c02a2c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5a5c1df8434f9d2efc1ce2f1ca954e80d19973c312751fd9408ddc7c974a99df","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"e4f7e99949c97212d1147293d3ccdcd60007bb3b85b0a998dac8c1301996f8ec","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4e61247339ec607616c8414642f48776ed371d1c0cca79cfe30caa3d1ae976e3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c19653aaff75cc876d71dacd9265a439168fcaf88e028056a22745b1d34bb111","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"be1d942eb5906688e80ff883f6b8dab81691ecc82b86eaa1ddcdc8adc90d302e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d2edcc1a3e301374d81298e68bdbcf6a6ebfca2d9581c43c36bbb6a70c79bd11","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"bb7817cf789b1caf0d6b1316606e48b65b01dc64bf24cf68dcdc78a30a413791","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"773e24f843824e90b43e9bc5de9e3fca913c6f0854f1b5295e9b547f5416b836","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4fefc08752464cc32a8ba5b3a908f3ffbac02e71ab0393f499535d3c77ad89bb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c0af5ced052e574333cb1c8b75d2a4c5aa6cd3433012eb1871c74f34432276ce","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2be302dfaa09f5e7f20ff681d3ac30d594fc2f6fc7643a865d9c7087b71c9888","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"e754183eb049b8af3659f4bc1cc57633e5a58affbba13ff8416095a714012480","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"5304e92a7d44c49ec6132f52a99d715af8a9af6b87293bfa686d20363804071d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"515e9eb55b737d743431d7f13b42b7ef97b4df3defd1a009f4e7aa1fcce40ca5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"58bb3e20e84e518d96276cdda6fdccac28797e265985c133dad3bcc1d32ad55a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"b6c45bd64e530f369ff152e7274f05faa97626f9747e711cb264acff2dfce145","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"db490978dedc9591c5564de517d9016b7ec26d0b1e32598d112b3aed5d3c5d44","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"975a9a87e364f4c65795df909bfcca13a9001c511b1e23e66d73429e10b1af20","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1ca99bead19333c375e999bfbed7954e819e4b106c3020cb53f475cbde25f7de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"9b2603375f93a971f7058a12793802e626237bb9886ac8b090ebffb538b14e45","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"b1ae289e35121155c7d86de6e470795c9cb72f0c92ba1fcd845ef5959b76b636","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4a67d87de0d5ee202d8de5a0c47a2f970c28611d1952897941dac7396089cbf1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1ad70dd704941ad7ff7b0cba80f5ba38ad51fcb24ae86746c68a794560cf3ac1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"455673ba2b0f868c4929b35fcd0ffc43d9c385a506a93f1a4ca1ad85ffeed5c9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"e41658db79aa59b0a68dea644337b87c3f0f415323b68e21e75c22b41aa94d1d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fbf5f11886b30c7748ef7e186edfa33e9d003cfd9f490568c6fb0f6448feb5b4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"143|mpDAO Grants #8 - August 2024-coineasydao.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"eae77cf00f20f48c3222465f2657f4155b158bcff7ef1d4d2a4a59daae75ac10","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7b60e6eda63bb71517423f58677a9a0e30035644e8f6dd1347737bf6f089b816","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"0x9cCBbC021888Ad9F572F44681401172BeCcA76A4.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"36245000000","locking_period":120,"voting_power":"72490000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"72490000000000000000000000000","vote_positions":[]},{"voter_id":"6c6b881fa3991bfc090d07779d7af49071273ae1e0fb2b1274daf47994da4e8a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7dde0a27720b6490887c301e6cf4861cff61ec3a7a7460fae79473311c260e32","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"cb1271c1b72c8e2d9e160d5d6e71b85749236da7433e120534ac1dcd11635c67","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d8c01019cfb4f94a4622a8e64c73445a5ffded6f0714aad1719894ec994b2a4e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9134a58890b1749e417076929bb7aa95d8efd6ee8e8cc55069cd1782a8664130","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8d38a492a20136fad38b04e0f48cdb8a9873b7d174bd3a416db17905e91616d7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f0ec367be4c59c05f36862a736ffa8f2e1f7805851d56f547964de2fe8ab4cbb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"17d1e322e42abf9b49246b4e54f7fa387fe687f2aeea6fa74b1ca00cfe5d2464","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5bdca8fd83adc36b70d884688cf9dab89600f2e035925d51b3ea53a604dc7af6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"efdfecee9b258dcc2eb0ab156bd8c79926cf7db9a005b9548174f86481190e52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"20803c47d004df56673a08767e71a67977ccf66d01692ee9c9ede101456ee4c8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"4bc615441e3789fdaf2135e0ca6d6a1cad473e4f21492585494c0539a43d4b4c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"20f7e9405de349d839bd0c6c3322311c73eacf7054d9d8e54936878cd39f8b8c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a8cf0344672f720c39ce905438977cf267efefc500a099b50fb7f1b6dde61684","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a94ed3d0e1e831cf125d9f5b8cdbf2ebfdff86e2c44ea63252ca1184b10c06c4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"aa3b8f24a65a7f6a06cae02b13c41f86066408af5b44c80adcc1e1c9ad089f4e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"979aa7167db0b18d6a7121f2d64f0fae18041f47b0ae5992072b67542e6b7983","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"bb8fdcd3a83a5ac151644faa98b40de05fd3736356f8e95c03c9262938c2df4b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"80472814c00e4c1cec25e4291907b42b0cf2e322c42e87a3bb30d921fec64b15","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"cf24343ee9e23ebe2df6b9cc689071bfe3d6dcbc30444ec328b9743e3d111eed","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"ec4560a9c20168089603407a0a1d43bf26f9f19f7f58434b40e5b91383cc42c3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5fb73daaa28e215656c48f377e6bcf93325b3fe46381ed30784fe7fef676b1bf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"96691dd13f1680b71816e8e262641d435c82448197b619fc0e768bf92e100d79","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7f86464b01ee932eb8e07a6f92883e3b140121cffc4e63b4a579116f2649af2f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7ff81419e0ed0c08404b0ba6d9bd693a0c6af1524a33a4127f58fbf1d0db7943","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"669c9d8008e2ebf1ff07f73fc29d54654621089298a0f3ddc9b08868cb371d87","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f4b2594fb1cf64f2be6ce9e45cce847a09a8d4ea33609847de67018a19d6c23d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"358268f3de6da1258c6b9d82a09045cf6614da2c663330456df5a6f912997027","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"d0a2ed46a6b71f995ee0bc8eb24623f3f8c5b1b5ea0d9c32cf81fde09b802dbd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"0dbf3d872eb1f003da63139b7fcc9443493e2c3163186e3e626cc236c1ac1ca5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"79cad1aea61e8f4fbe575059ce60a71e093734063df4a3c073a453d9185ffe3c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"44bf54e4b457b65d27c38b0ffb53aa0ad649fd1fff2d18f4554651c0c4ff27de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"55d1d4e702b67edbf0ef197752231644b7ad849e78103fc554fb62528e28c900","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"91d3fd762c2e09e33ef11e812551b194e2c8f6ce37a9120ab1a8d5666885f64d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"33986323569c11499fdfffb13a0c53bc37174e2768e3ba98010ddedd113f2fc4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":300,"voting_power":"40000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"40000000000000000000000000","vote_positions":[]},{"voter_id":"9c18bd8c0b09e6f80d0872ff6486ebb4ca4a78d1abe5a0b1d38f7abe3e8469fa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"2ab37ab9c9bb48add2ff5ec2f232594a4010aef29169b396c916f7fb7ebc66b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b2d6c345e762593aee56a61eb484c24b814cea9155abd29da3e637c4ea8c30dc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5a5dda72c012837e52f874b793069f457139fdc79cb68a026de58f93ff048f80","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8878773f86c030c087865143188340e90da331ac4b46d11fce473e582f5731c3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"12846a9a54abe348f6893dd3f70b47162d38a5ecc76cbf77d0292c230fbc1b5b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"11a3698e7b282b744d26eb731823c20409ed94e129697dc0d8c361016832def4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"6192e5b18cec17f047785684f24fec02b594b428a1f7997da7b6f3257a8a31cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"78c8ad2e2bdf6de315a795344d87ddecd95e2f0ccf9c37eedfc7b6ee4e3055d5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6e9ae68249483db066789560625a9df789c0519ec9d5c36be6fec90832aa29c8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5131996c25ae37b776f3586518066ae5e7fd155c03ba1688377ff9ec63437c8c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8be05f82f633b625c74ab1dd1c30fd48d032e27beb88fa87f1a0d9dda6d6e649","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"6646b541a73db187e5bf1f0eb03bcd0646a7fce3806f98dabd333cfde7ab5bcf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"caf2c794d5f4f1769a8a9323807c6ade109da32728d74ffb442b2b13c63cb7c7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":45,"voting_power":"3000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3000000000000000000000000","vote_positions":[]},{"voter_id":"af9e86fb4939dad3eed7fb4462938f91f6328338ff0dece34b0f8d5eb94412db","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"61bb815b7c1e5d2937a4da895a0f9384e25b3e45d3d57683c222b2ea28e258de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a21d62077ceaa7599d11e8a2ac51a458b42ff00822037ea8bbc7623a1aebe50c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6048790c11c87428c132ee7e442294a91200cf08e6e8d9708d8227225314910e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3107fc720c0db450d94191df5706d6c9120044317653afb224170c01bf6f8ba5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"16e5109bc4cd76f332b86f44f64639084318cfabc08ccbc97dc87fb84d01fbb6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"cfeb6d9bd318bbd6aea2d6279ed0d68a92c0bdd210a307275666121196e64324","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1cacffa12e96e8a6b8087dd5e665b08990538a4d5df300b30a70cf9524bb3ac6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"2936133c84f0c6cb7fe4a3d0099c3e9f2764936098b4cdaf478d9c8e5dd7e1ef","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"aa42ff1fc4c261045c9620532571e6428c9e63466c887569262cb509b6f97b02","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"18000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"139|mpDAO Grants #8 - August 2024-farmersleague.near","voting_power":"1000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"145|mpDAO Grants #8 - August 2024-d145ede2238bd103475bb8b173a2a48420d0a9de14917f0259d71cdfae77071c","voting_power":"1000000000000000000000000"}]},{"voter_id":"07ecb2f7b9ea6c46ad0f1dac4a59c601ef2a024ff644fbd003f6e51b3ae84966","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"e07591162a404fbd6a0295669d2cbf2f94c4a3211eba1ca45a660c2575afe2a9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"f6ddfa48d3e9d1307bee36aa33bb25ae61b772571dad90f9a089d0bd3a414360","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"268d56dde9508b3cfd525763ae40a634bba0e3cf58b92a2257ad9541b95a9cee","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"92f435efe5cc03013714e2647afa8ad5044da3e62aef4d129171e30c4d835891","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":75,"voting_power":"5000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000","vote_positions":[]},{"voter_id":"778109628ff45b88b8adca44f1534de6a7643ea3e95c54d29644750d427e9fa3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"b6be88ce9708a743d073d3571ee08fa61fbbd33d84b184ce64c7d5bcc855d358","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8c8905aaf07c9ce9ed683f6a30128fdf2aa0688ae1b8836efebf49419d8b6949","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b32fb6fc7767f6e463645a7f96250b68cb6f01cea21e15d36e3b82a02b3f3ef1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a050001d022f25200ebb416b683cfa8c4e2b3b1432819758e8b43006e2b043dc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5c12991cc12f19b2089e13beb6b43a03153abce39d9643bbd81089faeec69466","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"3ca3a3770bf71111b61151fc8200a7867a9377cea73c552e3e4e4ae1364d518c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4f98c08af540f76c5a5e833ea73e4229829c3bb4f0f5dc04e43fda59c008f3ee","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"39a6ff0cb51e454ba62ad44c44d6dcb03a93ad6eb5ed098dd09ff56c63f45552","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10000000","locking_period":120,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"122|mpDAO Grants #8 - August 2024-289e3d40eaaf7df42a14f468ad0ab0db5c1fe5b8a9c5141ae6ca31734481f46b","voting_power":"5000000000000000000000000"}]},{"voter_id":"e5a08b8a611477602027fd8e70ea91321be5881d0de5549f4d06785da0d2c377","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f20f70e7ac9614f75eaf008bf88e14fcde36582aa54816f7de7fa60b890946de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"fb7c04ac2724f64957f4a700f94524955de56fabc1fd0b68323bd08f6aa7cc82","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"27ac911aabbce0844d426372dd5df761b3141a28d393a3a260d5c4d14043bb49","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"747156aec3a7985a93a65a45a9ba62fae52932854951838c982ba52dff86d390","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"556b27a404e10628bc3af098c6bf66d2413b972f7b422eaa2e7a648ed2482d9f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"db32917cca6785ff274a44c38214c6b193266348320571c53e033eb762a48e7a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"379877a63becc5ddbdd82b8f8dfa0b037cf70a708fe679977495e66aedafaad1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0211d26e71677fcdf1d5b30eca7f6a3a0c31ee6f159f2624ca2d7f03fb11459a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"080070b516a6fade0e96e369989d96aad40a0f24c3d5523fbc1d6d5ffff840f6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"234b3a0336bf7e99c6b7af8341da3fa15d1925efea131a1e26c8e652e72959b0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"977a7fdf4eb8cccb0d902dec1200b9d494ca4d29d7cdbebf8092eb7f1097d103","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"81bc19b1cebfd21359fedf226eca3a91e6a85dc7f5f1cb2e7f497ef0bc9da8bc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"29b355959d1ef5b3c2138bbdc7894800195092c91be06bb02da533a022cb6dde","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d40ffab2f4a449ad010114ed81768458c83c592381cb16b5b0282802aad29d06","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"1db3e8c64a5cc8737f6320d199b61b44215f76bd8e4089559e9553d4eaeeafcb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"59576ef3e20c6c3b554bbafbb1519f181c9a999b3308247449b83a7df68864be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"611b89b28a3e150476dd47b4124998df9ddc97e148999ac7cd282839200818ed","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"78efa2b0c35ce04ddeb90805c614588bcd267e49e034dcfc1945d57901d17764","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"02a306a560688888c650385e60d13610109f47cf8120b8ae3e4ce4fe645cada7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"28674c93aff46aafec7eccceb3b8ae0b5aeeaf24404314bbc9dcb8080a857f7d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"9c810841538ec569e6662d08e33881d3931b4ee327f7db6bcb9608308195d3b1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"fvear.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"845806810","locking_period":300,"voting_power":"4229034050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2366198150000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"145|mpDAO Grants #8 - August 2024-d145ede2238bd103475bb8b173a2a48420d0a9de14917f0259d71cdfae77071c","voting_power":"76210900000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"ursamajor.poolv1.near","voting_power":"365000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"consensus_finoa_00.poolv1.near","voting_power":"365000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"n0ok.poolv1.near","voting_power":"365000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"28000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"663625000000000000000000000"}]},{"voter_id":"968e4fb2fbd7a917fe611d0b238a72cfa438f2a1ef8eaf56d25e090abba5db45","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4c550bea99297bd787489e1f731a19cf07cfeaa204801743f50418fe17838761","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"153cef0ad7f63df11217436b57f53f2f0402c068a52b66c2afe2890c4e1f1d8a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"1c60486b897a47e320bd87a734e71ab15acb786ebbcde3b24ac4944fbfc0d721","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e9d9d20a4d163fa8171186044a5928e9d691b91928f56d01a84477bcd5da85c3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3aea087c2064b6106e5d4de20822994617076102176608981acc1c02b161d07c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"be06431e2053a0e1b556e394ef435a34e6a4e0927dc7fc6ff94e019ee9ab6840","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1bfb8eba15f02092bf9f60be2feffe8fdca0c5846fb8ca1afff40baf8a795fd0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16000000","locking_period":60,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"16000000000000000000000000"}]},{"voter_id":"04b4f734c6ca812b1de152f0820dc89c3e15c924b61434289441ab80ddaabeb6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1abab1dc88dbdc9ae81a3a2120cdccb299b35b9613cc1c3ecae49776aa61d235","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b46c33e740e216d1ca19c21866d9b65d56f4569d983215debd2e139b6ec684ec","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"20e1695a53629313ec5d6b704e15381870a8c214557cbb3b8c5638ecbd055c49","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"eabf4545d6c7c2b2e1784f5c903a933cdafec44c328777caa7c62cb4ee5704f7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7ecba0546aa291bee1e488b8d8c0c7e97cbfc5b5003abc83de172d30aaa43a68","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"3a1012c4b875ca3a928930fb30f81b98230651b2cce98b301c92a31e9cf7c219","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"23b8ad47a89a7e2bba27e8f8f120ed8f21242a7db7927f24cd32767ea5727010","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0c6bfdaa39018ee5628c8646648fa8f52da17b986ebbf25bcb0cb15258b383a8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"cd0af57fd8b3d2ec4634d525d7d0652e7f445c02180d9e1c06c3a254e9805ec5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"988db74ac3e3b1e2b72ea5f9e0582029478d0207c17c0331935caba5a3ee72e8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"99fb84c8452dbc39f6d97857056362a53eed0f013ac37a97a8fa22a58213610c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"141d296201665fe1747b54df738ca06a301cd00b72c64169a04dcb705f275f67","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"aba3457fcc299e6598d06d158b16b06387d5d1faa6ee0a09f177ae66fdc792a1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"bd021d197c99f677e94cad2023e1dac554d7a9006df9b34cd970ae14ed6a0033","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5b4144f92912150fe37a77f2a289886e83ba835e1119dcb4154f7621f7c3ad79","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2a4945ac7a9776e606777efbe9f72664972bb5d7f4fe05ef500425a6f5a5e8cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"0d35ec724f873a0d65cd8e57007554bc89a055db33c1521881d6c0971f245abe","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2839e62b4dda8357de530da8615752ef2eae0c59ff5e9038e05264e72ccb3f60","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"20cc1aa754ed9fc403e86d10b2d73670f6ea73bc9acb325b97f71f5f84b1d330","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"add5195e2c922d21d6502dbfec0d618eaaabe272890c399ed4728b2e16feda13","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"aimery.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"81837703700","locking_period":300,"voting_power":"409188518500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"409188518500000000000000000000"}]},{"voter_id":"a30e630c9e462c3beade144ac47f0b45c733b848ab2c62585e428126ba486a4c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"218f4ccd583da5ce4cdda560852c26903502e60d4f6c10064109935ad41c3bea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"98a9ded118d6777f98d5babdb4f3fd67c98220aa6cb5d5e7e3fbecb904f540a3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":285,"voting_power":"9500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9500000000000000000000000","vote_positions":[]},{"voter_id":"bbb9c20fe7481a2efc4db7027faed285adf993d8bde8caa8aaa127a59e2ddd7b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8ca3bd3de47b83d129ff38dc26a832bb4e027aa461a153734c6602d9fae09cef","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"366180291e47db59ba84be4af67d2e03346778de2a32f6a867529fd271ece335","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"8c7f514bb54f5e022b2261ea399ba744c8727ae9bd7efb1fce95f18ef95ccbf9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b16a0fa8197ac396e38269129cf017be5f341684c255f8e87de67ca2b3725dcf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c0da3cba6ef59fc85b915981a8c2c38fb30cbcba8301b3157a5ba222ebd5e43f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8a26a6887c73ae1508eb2e7509e910a79aceca89c6136014cb730957ea5cbd7d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"48fe90cf3ebcfbbcad415b6cabf8e3f9c291e7190e245b633dae2892bf7c4130","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"0f128555cb1271f815ae30af3b2f532640d360ef296f4fd3b7d47a8c228b50aa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"55e3c9bf100bb334b47172fd74a4f478eef9de7cbaf8565a44ee501a483cd822","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4fc8b84fb7e0d7b0836d49b09f9358a40d8dbca07ad4df8e70eea2cdd5252cf6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5ff3346a5a17b687beed2e6f08a3105fc81b3b5a4fc49da4a22861ed41c9b9d9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"ec66eee5d0faa13f5aebfa48dae3750218ae745e881b04bfb67dbe983063fa16","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"0cf7fc15d35da02960c2443910832df3dde20feffb97c6cbb30bd7fc3fb2663b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"c42b6562743f5366f9a635ebdcda0bf99e864cb06bc1d88d220b29192e19d71c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"694cc6ed362b437b9288e2115a561e8755e098e638761ee4e5064420f2c0f4b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"3946051d6ca5fb7284bf84c22566ab870bef80b41aeee58f2bc04f2c7b7e4886","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f38dbffabe264f9c7de5a25e9c6be72f0095010eeae1af6fdcc4cf9563fb8d5f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"048d834d145df1ea099bd19f00cae600237de148c086feae635b89cf9a7ea3f3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8820980971235ef2ad09c1223e50544510ae3550b5b4d86a208f78703cb63ff8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"343dc87aefe6c6178d94ecd6e06fab476ba9b3a3c0a34c59c1dccda126fac8cd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"28e30f6e7b6e311459aceb56873a62d1e04d0cf1ae8224b1b7aeabbfef6cfa5e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"2f172066f80b20617a293dc3abf2aebeaed2d31e64762e0fe216fbf011cc85fc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"9a8adbb0b85fb9c68d5fa68d68d91016d3ac0c81061f46e98843f6233e3d287d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1cd1c03f7b6f8bf6b1a0e10757b7a66ee78ab4529020301a675db35aa83b28cd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c767b3ed24f4c72981a67c32c65ccf95e062a000f0f7046fce5629bc734b5763","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c420eefcac8e2f2e1bc4c134cd3da1e3f907f8baa35e2c0e38f2d9de802c96d5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6d26c0c644d5dd341fd080d99e927cd5224418d481b3a01619709c856672d2c5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"336954a8db5b830e45ddd8f97d0fbab53307b15052e1d0a3c87580c1d67af4d2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a8cbfe144d53b0177b40169bbf99846519ab6048c993fc68e9af9e91e4e52dd4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"bitju.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"40000000000","locking_period":300,"voting_power":"200000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"200000000000000000000000000000","vote_positions":[]},{"voter_id":"5b388c6c0e5af7ea9b01ade25aa942759b27b3e9b279ad4977502d09aeab9165","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c6663fafb7a518edcf63c0b5512fe25841385701d6578ff15c263e6becb5817c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":285,"voting_power":"19000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"19000000000000000000000000","vote_positions":[]},{"voter_id":"69f8b8969d75657e8cfa363dc97a35c656d614c9006a6b1449d7af19f613eb8a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"92b46b9b10895d44f8a559e145868b00bb0ce027ce390d5f2e4889fc677ed245","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2f19df2453be0ab186530b7b00c176e9083e89eb811d150d4ae6dbaaccd8e8a5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f1b3805a63b7f5a2e7b234b51a7cb96ef30eb075895ff1f7947226c1f036618b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a5f2e552bde4b802eaf7e8972b936ce97ee3a20e57452bb815f5fde179bba304","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"256c4adb705b28bc1b73931faa884eaf527f02e6d9f82dffd0b53f98d4a9139b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"e9ef5dadacbe86c996bb2cb1c9b72cbe7b4f90be63dee07644b8d6f03966c800","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"af0a172be54657d9a41f2614b1c5411270de5ddfc5c27d4b400c1cca1044d52d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5bc6316b653d670c80c324acb5969987d1d79c3959a043dcab28e5b93e8755aa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0x8972Aebd5DBa64DF1E0321daA4914687e4E1e252.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8137000000","locking_period":300,"voting_power":"40685000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"132|mpDAO Grants #8 - August 2024-ramgor.near","voting_power":"40685000000000000000000000000"}]},{"voter_id":"a8141d13043454265ee7627936a1add21f7e66573bef308ab1a61c0945d66a9d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"9bee101fca2a9b72a49a8a631f31d4836a024d755e387f3ac36005c7db4b9742","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d6e29896e822a1ca617c2d8aba47c1a422ac94a992e0ce662bc952dd32c25893","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5974613f0cd93fcf396ea4f22d833f0373c75e706a4d422f633202de7e4bfa84","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"14fad723702ebe71e528d07bb53c9fe5600d4387dac9ef7834dacd1349807359","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":300,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"5b54be3cf01244e0a028a62a50ba80e907cc2d553caea959bb91386946c4e117","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a377b09035d59f9dfc99c62a2857faa6d07ac33cb8ff5e5cc9d39d52295c0898","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"54032c64a147f7e46a4b321f19fbb4f9c9e612e7a96cdf750d5fa24282f75551","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6d1cac58fc1dd96120ded7fb0f873d1f639381b496e3b28c95b58e4a40101dbe","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"dacmpool.poolv1.near","voting_power":"14000000000000000000000000"}]},{"voter_id":"52e3611537ddb25f53ac8cc9f7f73ea6fbb7668d368ed3b929913f54605a7461","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"715d77863f9f1f8e6bfd9dafa164dab8ca78df3fcca90cc858b1ae2e0764e20f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d3f4462cae39f6f6ff030dcfe155eaf6f336ac0249946de7c761e3b2582ad486","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"632b699c6ba3d9fdacabb203bea70e61470cc5fdf8e11b85ec3a0f03a1289ff1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"75ce3c238d9c8e9981bc047b387b0f418dc5aa71cc32a30a10df0b5ed52e90a1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c80d3dbf4a8d934ecf66a525c2769e95e55e4bae575cf7bdceabcea77a869b3f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"41cc33183eadc1a3dae72f083e44bb2e3249700210325ccd0f92323a933715a2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7b41a44ec99cd83e006d52799a01ec2efed57b96cce388c00826479f1ce32d11","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"adb186f05024d8c5614e8fb99a21937b5ef2053646aab2825e3b3f68242759e9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"0xF71e509Bd6d79Ba5f5d58A94e995392751949b33.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"538000000","locking_period":300,"voting_power":"2690000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"138|mpDAO Grants #8 - August 2024-fairnode4031.near","voting_power":"2690000000000000000000000000"}]},{"voter_id":"7860e6d1a0e49df2b5650b95e81d6c4b3adeddbf3540c61c594277544b9d9c09","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"be607f3dd37e7c084fea48e4e3f54d4653fe704881628061ac9c3db1218e3b66","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8af72d04c28d2c91f984aa9f4285728ef775963fcfac5832d94fc1e64b41e016","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a374c862d2902185c977d3691d669110342efc35e91f39baa7cef4e8b66db6be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"502832de71252cf6cf727bbb1438d10d918e0aee05ff90fa40fda6468df6757b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"773a801799a1274339f3229f4bd3883a7e261f4424330cd198db33cd685b3579","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2038f436ef9570d7a7a03ff4a60c0a4eae453e87ccb1424de3eb46960f5281b1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0d32dfbecdd6ca8dc622f39f68c7ab7fbe90c1ba92787a82348234b547dd3d44","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4aa9ccdc769e426fa7df278c66bde305abf0a4b5572925676a756a610f344c7f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2fb647129ad58791b8eecca6df2e6803c357336f0c9d888a6659a1f3b2878617","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2c48d0e57d0b0a59d9a497e44a1b837346e00c9e74107a2a33b9e2a42fa0de34","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"370dcaa178b8242d9fb38559babeda641dba3631196a79eccb31a3e51a23d341","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7b9da3fd6a0ceeec24a9fc455e39b08cf137d0ef7474b5c5cf8f2523fc7cf455","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"26c2ed46d1e50444392c5a43eb75497273a8f20decf02e5829048bad3d3fb926","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e431e4b4c01e9cba290ee680004333d4633379355e4db59235d9f618817483b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e54377a28d67afd9efb6daeb0b51fc0f8ae930014f07fdcdac502829be012cb5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fae6c40b8d63a4cc53dec40ebb568315231a43cd9c497a71aa964eceba5dcc8f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"570fd0840ad6ba7b075a39b88a4db335c8ff53aca601f16031d12e9b3a33b9d9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"cee75fae578ecc6c43f39738b4f7479e2d1515d8cf5dfa80d45326902ab20a7f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"47e9ae9ce20301b91a859cbfa30d87a0a4ca0acedc036be350ce85467d26bc13","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"99ee941cf0726f217e2468bb00596de4709f5c3c1142a2f083c6dbd0d0484399","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6de31832994c462817b5d11456fb7975abc23dd00185e4bdc5ddc209bc567240","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8a49e79ae23c39d28f5411571d8ad2fc6b4e9eb5f69102902a2158042960d052","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"ee542bf6d4cda50ba458f6a7ac037458f54f76e4a6a69a5c70042b2881e7f626","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4b11e4b51e34d3b98bf70576b2f34615aadc7284b8f2602fc81c825876d8f894","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"609fbb460a525cdd54dbc02a2c2ee83337a13624a2550e233b2910ebf3d23dda","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d47890479963e93beddeec274c7e2af5728b25966bd1c480a55b469a29ab6774","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d481fb470c9068c96c8d63846aa3f6a2ff4a4ba7e9e00a89e74cfba52cd08701","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"37765a61d5f6d8b5e18cd0cac8152d5e13a54394f585d8c73c9f67bf4de9892d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"db7cd17d8ea22f47437ec0676c14cd8333614e09b888c2fb542e1a322469409b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"eaf331cc794e6a7dcc7df80bf4ed4d2d8d49f68359b5e0a05d47d1099f840701","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2156236d5579fcbea1f36e16ecd1e236c12952effe4104ac78860a51e1401a4e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"aca1e649ce286eac2c96a37c3b815fa5722f029d9acfc8450bb521e68ca7482a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b61f5174bc0e4250aab40c5c80f392ae8f428c175c65fc163a9616fb60862ab7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d7bced7082eab16173fe70bbfb2ddcc3b5e040b759a75c90658334089c1d8f9a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"56cf9ab5bf2fb8b587809bb6cbc75a812490bbfb500041db10f84e98fabd4205","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"743cfbcd1c2e69badd884df82cb4f33dfbbb54d42d6cdeab2c34c3833b270c1e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":135,"voting_power":"9000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9000000000000000000000000","vote_positions":[]},{"voter_id":"iriska.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1509978000","locking_period":165,"voting_power":"4152439500000000000000000000","unlocking_started_at":1724422008133,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"57bdb5e1224e10c1ca3248c17cea691fb0f2af381f3205a61cdc267976e2774e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"10afdcbecc7d6799ff4001b88d58a98237bb1d7d6d0cbc6f9dcfd9138a929578","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7397737337822c24256ddea216ba16d3c1539332b3d6cfaf6cdc90410fa80d03","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"2574247693b8fa3954b199bf1032c94d448b7ed399a7788ce4df7cce7bec72f5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a9d23cb480a38b5a23c7682e9e245a3d120f1e39050a002adb9d2f82d5c6dad2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"3721500c3dfd668f9e88270274b361868e4bbfe96bf8de63f0a4d04bfabca434","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f97b119641e1c57386247cb58a91d9562872a01b94aba9efa40b3d1e98f080ad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1cafed7e66f4468277c66f24e29cf9332ae32aabdeaa906ee64214c537376e57","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"05aaa7e1174bde3c69d7be67000d6f9f0b2fbe9e5ef91f7b299af73aab15f793","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"67e59e26611aad2b7adc9abde443170cc6656f09f0c22f6cf0c58a57e6852642","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"119|mpDAO Grants #8 - August 2024-wuipod.near","voting_power":"2000000000000000000000000"},{"votable_address":"initiatives","votable_object_id":"131|mpDAO Grants #8 - August 2024-dollarinveste.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"c683730ce3e1c18dfff909f2d7cf98da0a560a4b2c954d937fd0550de3b9a429","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"abd4d6b1463b65d06fc31993c6ec4caec4956fddb2e55f3e636dd21b37833d0c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"4ae6de511d7f09aa0f21ba48fe193532f4ed96761ab4e2db5abdea536c7f767b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3cf07a62452f1efb6dbcd84c12497ab2ef1e14f73f579496bc4c877c114e4cca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a40fe9b4cae23bd42b0740c74145ac5a2074a2c7e6f11367458309cff80d50c3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"47770f6bece15d9dab89881bdf5ec7f690cf93162a0de582633ec266535313ca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"f6b01c746da45122f9e15e53ce751be04224b85f6e1dc356ca99b6a5cf42267a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"832c0a931a9ece9318a843ed36d01698a5cc25e28901acda8eea64ca80e90c4c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0352a3f372f076cbcfe8e7feb3fa0e12b97c9ecbc7fee305a5fca2c35cb15aa4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":135,"voting_power":"9000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9000000000000000000000000","vote_positions":[]},{"voter_id":"382725c5b68a51c29ad53b809b76b89e75506d344cd3f5d2dced433f05331afc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"464c7388db9c7e7f13bb8ffdf2d0b19cfc851b7043613170ff74be4362d46827","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12000000","locking_period":120,"voting_power":"24000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"initiatives","votable_object_id":"138|mpDAO Grants #8 - August 2024-fairnode4031.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"9d4ba8fa1fb2a9f0751e3eafc43e297fe2f02bd02a73530c2110d3c8defb2e58","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"43b1e08662df227161148d9ef496cff7272f4734a1814a69c20152bb06ab5a32","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[{"votable_address":"initiatives","votable_object_id":"122|mpDAO Grants #8 - August 2024-289e3d40eaaf7df42a14f468ad0ab0db5c1fe5b8a9c5141ae6ca31734481f46b","voting_power":"5000000000000000000000000"}]},{"voter_id":"1c16087c43f61a40873c673c20df1b30037d2f85bb63785e6ad3a73886383ffa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5798ea934692c8534f18a660efb5d631528ae9bf389dacde28f549391a2f7be7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"331b381bf154e8635c1094a8c36aab95481977d6cc466deffb3a162b0f39d367","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6412c3d502b574775039981ff044aee67d0bf12aaa0a51a7c2f9c45e8e1c8e64","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fa71ae0e0943dedb7e152e61b92f1a52da3ec9334bf20aa53bab15e5b34b2be0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1edd67c6bf71c4f2fa845b775c7c7d5b1d90460169bdc414fc1818b5a9d12864","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f14611cbbaf993b982b2abc2a007b0cfc959b38ab33f75806c964aac94aa5cc5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"503357b2fca78b45effb090beb6c739ff1e0c4c6843a85be537cbc819fd7ad9b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"bdc429f74fad89db2c7399d5cf5743134ca43024b6cf5cdd97d2aa019d55f201","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b6acc91ea27d18db1cb3d435ccbb9bc7d649cc41190ddd7f792b2b3cbae1c0f7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"e3e7978f4558f3496d2e955a5b69e91c3a7a8b47ed01e39a10d2bd3230785a26","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b1abe99021d300cda54c7002d8d1974e9e10d54507a5be1962b72871ef4d8cff","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":120,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16000000000000000000000000","vote_positions":[]},{"voter_id":"74a541779df6025d9547e1234e0882234dec3ffbceb7bf4949430cc4bdd99e04","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5a74d3a12445735a328c7f3900a0b0c4c936e16bf2c2aa0790c112c7c0fdcc5b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"cccd57915ab1db1e2d57ce15bb8418e96e19eb77839dd3e839addfcab33305db","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"293177693d0471d225c99cf389693661023ac1b91267f67db618653262b96ff0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"384382ab388324e31c352e6bb75e86eb6a572c629bb774a0e44d6fee44ea5bf2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"64d39c354a9123e95d1e910a0f3ecda8b7c76832684d45a8738417dcf77e031d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"79256c94ca2bf7f044a9bc1ea261bfe791c7c2c15465781833769ae814509005","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"06f1130cbd4e1bc753f92bfcb911dde4903f7343190319ee9f74d0f726b07356","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"554247e1b4f1ae9ffa4fe5d5461fd1a5fb95a39ef40f9d5a79fe882fdf0db6e4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"654385e2daa3abe92030477089afd42d8282bc158b92298a53cb889278cb1319","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0d230d4d080e1129173e2882e9bc7eb81fd74120ac72821508f1fe49c3e307b2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7bb51238af71276fb11e438d11a3a8b2abf64af961012f543c16c2ad72448c4f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"144219d1230ab15c79965c94523b03dd0daed3fe7391590491b9b1f72debb34e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"bf53c02015ee30aa29e758e9a39aff0748d1a339fc9eb8013d35740b86f3073b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"ca6651088f5c9df3fadac5ccbf66539dc4c2443ccffa275a698e25f2043755ee","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":120,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16000000000000000000000000","vote_positions":[]},{"voter_id":"340cef1b18f3055485cbf8089af43ab9a17515aab3899f246f18c69f298366ad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"af30fd317806b5509e9d46c88bf591ec9153012a0362b203b65cb2fdfb8ec5a4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f26a01b5add812aeea6cfd858368da6bc91cbadea42b0a9da890ddad1aaae842","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e4dbeda7c7eeeb286d1de196ba1ccb7210dc3afb0079ffdcb7ee4e62d58f188b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a40e95af191420c80c6e8de486c3afc747bfa4b45eaaed12d80bfca7fc52c6a0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"f0f4dffd7a8ee7bca6a2767ff67d3f98727d95d7a9ac964228b4647c4a600f21","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":225,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"ef980e018c4a2cf396f7e2cb91e19ab63c7b44f01c4543982d94367e7db536da","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0989636324af45adc99bbe569c0aa23d99a1d02d45003435ad64f78da17b30d6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"071df7e320872934e07730567c0a3970a0fd66e1c4758594687890c17e24f16b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"20a575e5451c6338748efbe652fc48bd4361a836c7ce7214a5b23c7f8f498f4c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"944645dee4e875525ca0f7d9b9722f83d586c5188c54452309c29be832113212","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c00d210b3daa1081187c88259b1f0471c924ca0dfa3f0ee15c54c43258e6358c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"eb46a36c2bcd5dc0a23386118409dcfd7a60b9e11e2291f89d18ec25abca7968","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6d7db62592dfc8505377d26a58caba944cac21a23a5f8e2d4f16eca3fb4409f1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"eb5c7c9b5c0d63050d975a5437ca78c31a3c7d6e90e77d133681429917cd2bec","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c5febb2767883864ff8f2a745edbd1848ae86fe7dc6bf5aded178e600c7b5900","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"82cd78de0a45695719fe9826d12a1935360f31d9166ee4c66d400b82d4ba2bbf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"729987990","locking_period":120,"voting_power":"1459975980000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"154525410","locking_period":180,"voting_power":"463576230000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"1923552200000000000000000000"}]},{"voter_id":"2a57f1fca1a177973201e3ffed1e09884add68e07ac9df182c3c94af377fb684","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"b93ef028a5bf4f1eb25e2f451fdadb23d5650f7c90b5bb835dabc5dd01026da6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b23a9e7a99a5d53797b2fe085d2c41b05054745a3bdb8a24b68f85ed580a5a52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0xB2736156370F078c0242Caab55E83844DDA53DE1.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"10122000000","locking_period":120,"voting_power":"20244000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20244000000000000000000000000","vote_positions":[]},{"voter_id":"f408d5daa540dae1158e697d1fe31eca80b938d07db47a1de852a08332b65d93","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"34fbe29e924d8fa7228f6b7bab35ae0ebcfc3b174829028e573bda46dc4fa199","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12000000","locking_period":300,"voting_power":"60000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"60000000000000000000000000","vote_positions":[]},{"voter_id":"ad56d38ed67ce016eb2d4865faa4e9dd496b2ab459ddf3a08a3a611dc4fd9c5a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7b784e43a91d6756c091f5a3974dacd23b5703e8c0b66794a14c725d47a01104","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5df049b1d953a5fa9b931bea84866420d5da4b4da5e1b9b1ccca235aa8ca5fb8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c383a2d14579cb90ade09603a56934f7a20b31d108054e01bbdc1d43396e2427","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5870b96b1feef73ca79970c99da18e686b55660b7ba6dfeece7ba58542389c84","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"30f54129c99bebd808722860cf1b679e5f99577525e51f241300696fb87edc7a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"78dc524b3f3dbb3bed995bf98212bb825901b9a365788dd678176893b3e44a62","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"026e7baaaa100dff5ca1bacb6f6918920df407bc61df03f7732f5d72102582ea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"69d91026e644c7d5fb8ff5909805e554b0383142fc2cc626523b5837de0e2781","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"7893fe2015c6e28f430f57c0050dd8d39a62343206e684501ffe7142fd472bc3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fec14113e1ba2b64e2afd3969ecdbfa8d066a6966b7b76ebe3cee959bd295a5b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"60e2fdab2508c7b41c9a9e1391668da9088143cee3cadff6d2a5992e669afa27","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"32d44416cf554d8699ec0ececc28476e10a858bc35f54805a5ad1f2bf0e29e24","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"276e924dfbeeb6ea6247c47b2ecc6366cbf1feb4891bea2155b51b79f19d5816","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4bb5a3bdba42b8e0a71a330e760b71aa7394ac502cfd48b1de1f3eda2cca6243","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"8c1db5e073dc0a7f73fff3c54d39406ff439c7bdc3328ecbf55f53c637d07268","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"54435b771a16dd10648b156f1024642a793311554eb5286360fb77a703fc5386","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"daaf9fc168bce14c4bce46781fb351bbecfd08585995df349f3493e2d7b1b194","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0xA2d177687edcFcd2F1a80b517D9F3c46926d7FC7.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1749000000","locking_period":300,"voting_power":"8745000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"8745000000000000000000000000"}]},{"voter_id":"a6771ea19a0ef3cdbe4dd2b4c78825b43fff8102f8bf212a636a8f53b921ffcc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3d0708206647a5cd587710c7a63cd14c5eb01e14fc008d5cf68c7346bdebe1f4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"339662530","locking_period":300,"voting_power":"1698312650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"astro-stakers.poolv1.near","voting_power":"558358300000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"1139954300000000000000000000"}]},{"voter_id":"84abb13bb0ff8cf06c7dfa6c34d932bc7657dba900dc8ebef62e0b9706e7f986","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d320fb5b63688bc7474fed76c4828f73ca562daf4a7498951beae886ec9c3327","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"54826bd1ceb4c72a334f6fdf4cff19cb0c712c4a92ffb5cbffd7a8ff18a01edc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"b46fcc01bb836354c4e919d45b01ab3361fcbd813cbb267c9fd0315ad8d129df","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c106ead3f018ee7d89874fdb8d0fa4abb48dfef27f6fd9fbdead0d32e7357f72","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"11eb159bdf4a6af2bba7de1c296de6fc4b42fe08cd480fbe241200388c236f98","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a4cc777e00c8d8651712d1efb70c5ed9fa11ca55fad63a3d53719c503b442f53","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"152b702780039983a80bf5ae0377ac048974d1168dd60f99633eddb607a874cc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"98abbe7698fbb7ff95925debb9c441b103ddee49619b5732d139eb008ca6c2d3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"be4f59f8dabafb4c4b366c69538beab7880b176caf420c81fc2e054b4041aa82","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"f94a62226496fe75519d1122e74b5f35864afdc434f09fcf32368fea759b462d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6eac14dfcf7a73c3dab5221f692c74d8b24ae734dd4ce3bf5402d5f3c95e5b6a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"20fe170002ec97b1259a2db0a3615c83e9e34cab2b72ff66b9478a939f6fa3b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"709542d81f7e2f0071e71f5204f61b84b4553493848b71126a06bb991f2fd796","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"319d08cd2e6548ea0dc1ebbabe1887ed6a1fc633f3c02a1f1c90bc67e9b0e710","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ee89d38032daf1946243355676f7f8ec4193220b1e0686091433cd14be6a13f7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5df9df24ced21814c3f7a9a136c66f06e6d3f582f594e10ad11426c9a6596118","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8252858c2ccd4356f2e619631fadc5f5d98b730874c63350e9c481a58ceb53f4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"dcc33483161f442c409b50b84660b8116ba9cd21b1e8d4694ac5d1b4491940f8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"56d2aeba87c686ad37097f1de4871f76699c2cd293b05b8bf844c2e2bf695fb4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"88e7a1911449255e38fcb03746d589d2b1c2f67225ee5005ac92065a9b30dc2c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c32b56e7ecd9d8abd937824157cdb82920de7120ce472e7b2e403820886f1fa5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"p_maksymilian.tg","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"yourdad.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1800000000000","locking_period":300,"voting_power":"9000000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"2250000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"6750000000000000000000000000000"}]},{"voter_id":"pablo158.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"200000502800","locking_period":300,"voting_power":"1000002514000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"31000000","locking_period":300,"voting_power":"155000000000000000000000000","unlocking_started_at":1725148829614,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"250002514000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"750000000000000000000000000000"}]},{"voter_id":"gastar.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"270825909200","locking_period":180,"voting_power":"812477727600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"812477727600000000000000000000"}]},{"voter_id":"f2ec587f5ee2c7fcfa255e41b2e6f2f67c996e9e4c3552f4f61f273039499e27","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"604b24c000b2c1ab3e89ba373cb45413a35f911d7f4064b9b965aa30ec6c3307","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"043248a41c0248dfd6559064e7d1df1336a85ff5576fb33b064f3c1c5d0092ac","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"55658976300","locking_period":225,"voting_power":"208721161125000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"208721161125000000000000000000","vote_positions":[]},{"voter_id":"0a66750b293fb20dd177700333717798007ad7e267819a22dd4eff151dd940f9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"blazing.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0x8b88064DB1595E37fdEd18102dFf6933A8b6EE90.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"56000000","locking_period":300,"voting_power":"280000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"280000000000000000000000000","vote_positions":[]},{"voter_id":"7bf0c76a85ec08feb38270492a0b056abb60cd407cd4ba1a4a2d554657d8d47a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"31c032af32864627db6ff2892e29bcc3881ed9a39ee9d92c4bfbc0f92cd9e588","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"b2b0bc9ebda197b4528db733c35829ef06c2c348e69145d1d93a68016cd68edd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"876bad3522a08c12b6fb8c87f9dd1ff47497847a7dbe06136e98fd81b7607cdb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"65a5ef266ef7c7afbacac621204efa5c0cc45bc2adf1b806731248f401595356","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":45,"voting_power":"3000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3000000000000000000000000","vote_positions":[]},{"voter_id":"6cb55a3167c07eb7efca2fbf6831dcc45ac735c1961a7c0ca97f351a7bb591ef","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":225,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"0c17bb6326e97bc7cdc106a80b62b999aafd393d8428b00dc6b524d2b13006ea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":285,"voting_power":"19000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"19000000000000000000000000","vote_positions":[]},{"voter_id":"3e8187bbb403b6e3d736edb55eac2224c0f841a27d847482425d0dcd344d2201","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":165,"voting_power":"8250000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"5000000","locking_period":300,"voting_power":"25000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"13250000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"0x5A79FC812149748e5E4AC30A36177c27b1327Fe2.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1007000000","locking_period":150,"voting_power":"2517500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2517500000000000000000000000","vote_positions":[]},{"voter_id":"07c2d2e3a3870e1b474a36df06f81da56f6721c5b9d5062fe81597380e9a664a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"5e5657a757bb41d7cf7e3513124b02eea8d256649cff6f02311f4dfe5bab19ea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000190","locking_period":45,"voting_power":"1500142500000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"2000000","locking_period":45,"voting_power":"1500000000000000000000000","unlocking_started_at":1727823434852,"is_unlocked":true,"is_unlocking":false,"is_locked":false}],"voting_power":"1000142500000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"500000000000000000000000"}]},{"voter_id":"10db3f7f05dc88700f822671ed0f8a9942ad4656f30cfe98c1efa696a80c85fb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"66b93b85f11c34ffbed818ec41ac7e06104a197b78e8ddfc75ba206658811aad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1681989f595a819ee42ce70d4bbf48d03f58ada6a56eeb6b2c1f24f0f3e998a9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a0f39a11339d4623b61dac6e400ca59b4d52caf493caa4cf80a0cbda6f3048af","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"fd5885a5df244625a6b929a376d92d3926607697bfd85150665c8aaa5d800a1a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"394a4892b4b4cabc53c1adc3b8f95719340998de22871b30ddced6781ef3bfa1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c39e4f5c58cf64cb3cb8223de94392d297c9db63ba129f905d0d9aaa77727f8c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"863de74a71ccfe5c27aef97cba791ef2eb034bc63c6fe10304b2eb5775c7f945","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"2ef3b4abcd52922633f5e262b23daf46c3c6fba22b8f211f2ab99451de77b6d8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"88deac4579cb7e475e8e71bea176164e822623996d40d170844cd8d348afca45","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":1728060364540,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"3d455049327a89b0b0899d886460c7a83e9d97958675b7ee084e68e2dfba3496","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"6fd94977253928c232bf97391813e8be73bf2b19b40e19666aa73c4b960e7abf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"2af49f0840744bbe06799c5f6f486e581fb5f29d63957207be1d17b7bc359857","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b6da2a6c2a45cac4ee04ada08b2420fc0882bb31a9a7c45cfbdef4754ef75cf2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"cfa89fb3ccf6ec703dc0952fce8b7871d784ab26ccb004689df47bfc3759d757","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"eb5015c8ef417da1af8e12e1060785a04013516dc6f46cf59c0692e2316daea2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a71508ec3db015df53c8fec0db941937e0004767a1b2dd2ba88b752bd0e58330","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1fe374089c2af5490b2298baa8957bfd878f4532c5d32b52b0b88bfd408e5878","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"677472908e6bf3684c2c02305636b2843fca477f3d50b76d0e40efb059f673e8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"58a221e69d7e376a82b7c1ef1861d8274efa8b57005362645b431cbd12b7daae","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a7bdecc94e99b2cabed92ee9d427fe33c302de22068a374b01a2947a12fb8762","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f79e3688dbcc3a3165232cd9702213287c08473da0dacab9b5fa246fbf897e76","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"801f584e59ec74a98ac0166632e9d021329f483bd4ad627dc7c46fe03088cce8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"61a924afbfc3a863a9023af4feeaef0f0adfd92033b0d0f38fbacc79157262f9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"7e8cd1a470ff2806661ea084a7f92a7b0942f7a122772c4e87f60fe988691bf8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"12a7ec72e6e83ecefcb14432bd4e10584885477a44d3b2d4168978e8dd98f42a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e75cd2459b758dbe5838c0f3516bb095ed11544506c7c8b9cb0127c9a4b64b4e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"cc739bd26bbf6ab90ce3fb9d41e8af1e85297fae6bb6cf0c052b3007387bcb33","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e22dbab1fea3e1ead4ac65c06009194f0b317dbf7c71a5beef5af0aeb863ffd9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b6e52ddb6a6fdc3114331a6b40ecaed92cbcbda6a678f70a2ae03268f33f4051","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"88f5b2cc701e6193bdc4e279f59de48ffaf0ad9f41e47f0b439d2b1fef101dec","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"twinstake.poolv1.near","voting_power":"7000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"chain0ps.poolv1.near","voting_power":"7000000000000000000000000"}]},{"voter_id":"cryptotexty.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"incrypted.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"5d52107bee24bc3c1188558a36eb9ace9995e2c7661cef2238c74c7b66ad377e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"1f738d3ccb02936f70e175e079e4b230dc0aaa207ec3731034c273322c482c8f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"086d7c7345fa7656dd5b34ccdbc59e9f28fb8582b4fce9511bc72b8ebc9bc33e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"716ebf23a6beeb2f427de862aa9d68bb0439daebf2ca54d095c603479d02ded0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6ff6c54242179073ada7d208ba3c837fa45235aad79cef65f706e52e2a6c272c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e291f45549fafd0119e0dcffc07c798506f5284291a5ea6763f43940cc705742","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":30,"voting_power":"1000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1000000000000000000000000","vote_positions":[]},{"voter_id":"0f99f4b0e982905e106d4eab42d90a8934ef1f53d904b335e4eeb4157054bd77","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"81907e7324689c6eec67e816d32dde0a35668ec2b04f991f745893a52d1b6d92","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"19000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"c900c1c56b632a20451a2851a5057aab6f540d405c4791f85686360a495f8385","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9103370c1ded2e04077ab3fbf0a708b8fee964ad8f83f12a1f52c880d48e3f80","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"15000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"5b04dea42af9b161a0749ef29132117832ae47fc8fedcc2b8b7137bf588526ca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"96d49a1b072f7c79af02b8137e9af2b80c598955180010eab621cdcf5f99ee5f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"15000000000000000000000000"}]},{"voter_id":"c5256542ea6bda0c1be75fbf5ec199ac9650246761eb3c7eacabf82c9b092243","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f67051f40da221d3f6a75ab243845868f49504235568efa3bbd1ac7f0fd6849a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":120,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"9287343d8dc623b0f7842fb82ae7e6fc690ab357d8962d604d6ff5e050c044fa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"1404d46e1e74c3a20d03380feec9bd751e495a168cbd33686b53276d4f3c695e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0129f067fb619f07c4246425355e69ce28f4fd6e75f530964d5bada7cee0554d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"370ce704f8bfb182314e71341e9b6e452b4bf835021860342ff71b016f1c437a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"13000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"swissstar.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"a8717b724a04e70b211c43eb3f47939c172c6a4700056b593490b3232a751798","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"1e27ce857ed9390752de3bfee95f19759abb8659485bfe381ff5ff474e6c75f4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b08aaf79df3eaa758f883cb80ebda2a5d02a138e9742e8db62f4ad0f94fee107","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"21fae2adbd00aa6d5767d49809762ccfb6c3817dd51c5d9e756ba50f9a6cf497","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"5dd1b36605c2e66a2406120b9e5cc881fd2e6d1b9e875acaa5bae8f51dfee5e6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":75,"voting_power":"5000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"8cd828ea41a32218e8bcb02b2b2bb6fb3398c71454ec0c1043d0b046761e689f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a7d1ecf514faa181b20c8ceda44585552879453fca844ee214e27f85d711199a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1f32ae051df4c3ee92c0c455dfa7e06864cfd67f48256f06d92b8234f9c06412","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"36788febe85c0e710fc159f7e89dcb3d6f9428f0e6c4c22c66b902bdf74d8fcd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1edd9241c434318001fe7da7d7db216902c2aed93cfd9cec2052bcc031505479","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"42fd84490f61b1f56ff55cecf838af96f845c9b7557d01af8b8964438ed214fc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":1725894076521,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"dcdac03cce7f1daba0910a598c1262e3db850b6a5b1dce9050918dec82713af5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"eef3e67b7eb739704c9e69ca4f4846816347ba0956781abc82c4d92e3c6af6de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5877ac057331689da0184690693aed16951b96f51cbbcb73cf299300ce979549","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"6000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"19f6558955d5f5e72c1dcd0c17428939ebaa857be8a4748aa835f66437fa37ff","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"c924c78471879a3bbf312c4fd14831c34f3066edb79b0da152e0f8d01266bb7d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5fb2e4e80796467b929fbfb15bf7c9fe54aa544d660ed95d3cbefa448bc47027","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"b7ba0977a373409ea548cf6b9a34bdfc7d736de65689c3ab8dca04a668994d68","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2e77ab61f7697845e2b526da55ee186d9a0af93dcd76b955be4155b49daca019","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":105,"voting_power":"7000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[]},{"voter_id":"d18a87234bea429ae49a4143ba758d3529e62613569637a769fa5ddea9728bca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e10573fd1f7c442c8f8cf13177eef62993ea34dc731398a14bf1cfaf5baabbe3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"794998389a05be635573b069fa11113a847da0ea15570743e5b6ae2cdd005d07","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"940b79c23a2277a6c1a0b38ecb826ad674c58275adb0d07225ca1d006bae6ed2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"be08aa1d468366014e5f0999b5f952c947f76f470a01fb104f2f067b18d480c5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"971b71d69c14b9e5e4df3aebb5329443cfbbf94b24141a95dcd12a668f3ad925","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"036a4501e25eb2751eb42b241de1cf477c7efd1478d077d7b3d6e6ca6476dd61","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ddc32350dfa3606940362e2e65a2827265d02969c0e351871c51c0c3fc0841cc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2dd3b187270076f03989389154d03ef114b52ffd87c6d7c4f12493170f571c63","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"b435a74f78ae96d799e6cf7a67aa2146d7b7afeea2bbba75144c16efe9aa2cb1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"7067c05f8d106f645c046e2c70fad16fbf650d361ae1bf9ec025fe5de3140b52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"fc1c6224dccc835deaaaa7f436de293048ff917f49cfbdf7fc168b61a889a80b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"72792332c9650c9712402218535027510079671ee028557ed77bd1d1742fa843","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":240,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"11000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"e9294c0783c4ec2598f5133da7be8152ea9c8cdbb48f12c4e381366b72cebb8c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0x0E26Ad20DA3ed9530f34f0cE7CAd089099A5b5cB.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3046000000","locking_period":300,"voting_power":"15230000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"15230000000000000000000000000"}]},{"voter_id":"00c6cdee170e38123763838006c396be990515dee717892eeafd1d78ff4609f1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4e6b3efcae07d074d448b075830a09e8245ea606e3ae5008721d8148ea76b1c2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"c7a675506432b1aad8273a1bbb39ac98da78abb068b5ddfdc42918a05b93f4bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"05e3b2fa9d1dc7c29c6980e2cf38815c6bcf456bd76ed2398aaa41694293ca85","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3a91a5d6405a139a92e8ab2c600df1bd6ccbd0b9fbe7f75ed99396653169f292","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"799aac39d99dc1a9f6c0208bc1d06c838ed2aca0d4616387dc6e99df79f131b9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0d71f1a9278ef28f622d5e6266c8f6181cbef45f76c2bc02072a7701dcdaaf61","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0c8b607399b0c2c330cfc5e9d4589151a5a092338d102066c4f0942d9a45782a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"14c859966f54eae431fa6dc83c3be5539372f9b2970d5ba88875dad62d52e71e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ff6fa2987f45ca2fb49273dae1d0532647c0b5cec38a62cd0811ab8e2351b943","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"aa7abe81ff463b52e88a682a25b516ed3874f3c12f44ddd12a6744c34574bb92","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0829b5ad8f8b242801656a319110fbbd21c18fdbd5476342c6ca54ff68c83bde","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e16cd0d634f877b0f01efb8676bf85f979deea1f789a7203fdac0cb480e408b6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"andrbenz.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"28476061200","locking_period":270,"voting_power":"128142275400000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"128142275400000000000000000000","vote_positions":[]},{"voter_id":"9ed0b94d100f06195b576c5e8da67112d29953269218e4060d41a3798af97100","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1361ad9c02b77a448db162e06a7ee89d9fe75bab9e94bac626ed4431db14e101","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"kryptokriz.tg","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"59776610","locking_period":300,"voting_power":"298883050000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"298883050000000000000000000","vote_positions":[]},{"voter_id":"a81bd780c6fda9db96d87e7cbd3ec6e6787dd6dfbd0c40b5fca3fbe2ca7469a0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f1fbf3b685b1d4e1908eaf14ce19ed5f433eb95138834752b7d88b618e9619b1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"64000000","locking_period":180,"voting_power":"192000000000000000000000000","unlocking_started_at":1730687301890,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"62c0051153fdc29123c27033db96b359a00235fce8b95ae6d2a90378ed75a6c3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1ae33cf82dfc8d29bbe7bb616c65ce3d8fd4b8142d8f2e1472533c8c11fc5d86","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d87cbc6d0749755857760871578e9cdc159d92c3772a1028c298b3b0f81e2d9d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"ca216b3e2c398da4b6c79221c097420883c76e434e2e3653dfddc8cab8d9fdb8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"99cac8041fe3fa1ad47524aa416e84c0fbf95f47bdadd940afd0fda3debb3a03","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"379009049af0bcb5721f27bff4f1ad261b68979258235e078f03b3aa74b398de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"91f17c18002344c0330382e6a1e00937b6ac49e61181ac18b1d2e57c9979bdfc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"afdcaf49a9cb610082703daca352427ae75c7d43ed80934fc9a9f04c34bb1d11","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"db07287a6fafe6f9c8aa7f9645b398c0a39cf432bed7b3bf3c7de8a94b08be97","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"b5b3238925314d194d1566a26a207222a3cdcf317d8cd9ddb8a99533adfe6e57","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":240,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16000000000000000000000000","vote_positions":[]},{"voter_id":"61d0087874aa6826490c8f85c60c3d7e49438ef3038aff524129bd4cd44efd4d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"9cb1ecae070cf1d83d0c3cd25aee0b854ff77272ac70d596e6a752ef42ea98e7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d746dc8c86033768f956222b19a2a72de997e01699d62402589ea5574f56593e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":1726093284453,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"4f9a31487a01a0f8784a33b640066d8d4156da92c532e68093dd66072da44397","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8eeef53b2a20b60365f3d674587970c71b17f7e9f8f8f11607b46e373edff141","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7ba8a7ceae452436870d704afc0c52b5039f8845eac11787578a13170265eb86","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"81dee9ff2783ff8391df1fe52bbe2a9e991a31cb9e54f33ea2ef3ed50682ed3c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"18f9f3dc9641692f92bf6881c6977d775867160e357719718c81f31abfdd0e5c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"06231ff28eac44415ba813bc8017eadd71de48097fe79bd3b0b91297c99d4ee9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1f2503d03142f5248a3edb5294ab7c382ef11a927be9115a8b449e3a8293ce63","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"64159310","locking_period":300,"voting_power":"320796550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"320796550000000000000000000","vote_positions":[]},{"voter_id":"f8c8909679232c5892284275ae41b022f5cdcfca753cd6486eaa7208c58bd676","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":120,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16000000000000000000000000","vote_positions":[]},{"voter_id":"9313be167ad99a001af9b81ed2485d1972b64d093cea31a921cc99f349fa20fd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"bde958893709fe0b8957f28bdc420dc3755f9f97d505bf4944b4ae891b8c8df7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"70e40ed7c95a6dcd3614909d103804937737a8aa468c4b75141ff5dcb71dde6a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1701c668bec7de27894c60678b3643ca7b451c1ea34df65b0d14e27cd9c554e3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0267c26e3a65088ca28a326d3a3d38c1e01750cfbcdcacba44b4d356f16d5789","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"028c9fbfecb62e6956d98f9f6cfce636c4113546754385dda1d53bd049ca01d3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b402408e7315a20ee682024b23333e28744d4c0589270a0dca95a04024b8116b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"58af9c4f6a59a435019250e6694b21555eee80803be9dbd25fb7f26097c844be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"54d2db661030396574700c5bbefe3fcb37b33c7ba464b1ec78538aab677193ac","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"db6a6ee86376da9b1027b4e4f797643b08f6f163ac1336fd88ca32a56f7ccf66","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"7000000","locking_period":300,"voting_power":"35000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"35000000000000000000000000","vote_positions":[]},{"voter_id":"6dfda20779e375d2fa86c4b946759de61bcd147f38cac297c8904ac0b896faac","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"abe2cff100136ee3bdb7067e73f01f9652d785083cd94619ca177d0493c53999","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3659cc1b64562db07abc7c8cddf0e16a909620430de3ab18cecbd917d1338798","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":45,"voting_power":"3000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3000000000000000000000000","vote_positions":[]},{"voter_id":"b35327c1958ac20d43c30aef2810d4138c8b6fc7f457f4321166ce1d548c4f84","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"82d89f0afac74d5bdb4aeaefc46190afc734bb1477ccf59ebe0b8f209319632f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a5a2e09c728f31f0c4108fd0f2bcfe0b1cb08b2007ebeeaa7043aec4dfc5e01c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b50ebc176b2c3469c1a471aeb95abdebd67da289fb6013f65e7a6fdf11ccbfbd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4dfdeaa39322742a790e25711cb1ae1a2c919eabd1ea97aa102ea55ce63e7130","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f402e8ae9d5b9a11924db2164452f75b3c4d8c11cbf2836c8e523b6d9419b2cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ece40f7ff08812440c1be6b2cb5f89f93efd09069c411699e2781726ceff9e9a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"d8bcbfee95d9a5220bea8c39e7963be59260c5ed4f992e58a63c3f45325ae74f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"25736f1f4db48fb3b70f3d252954ad551de4ee15b7afe0ed07928eeb85378463","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":75,"voting_power":"5000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000","vote_positions":[]},{"voter_id":"b36aad8ecd4d568196cda5b25fa6aded59546f2860d88c2c4411828254aaa148","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7f75a3e118451ceeb60e3fbe69cafde67faa929fecd0658c7a45f3c3a39827fb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9291aa7a7ceb719954a660976188cf0956ade8441bed1c33b0edd6414d4a28ef","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4219fb6486dc21c3931ea3a04bd5f89ea0282190924a404c911db17b894cfd0f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"f2b9e607ae630b5bdea7a305c6941defde1904303b155247e427ef79614c24c1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2de5cd18bf2babe3b486ea7f16bce876332575b57ee9c0988a6447cef7397fbc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"41234a7447f36f2653505f38a3c92b9de8baf4c128b4b41d0610c28b469ab24d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"563992878d53c3ef12a5f1a72b2bdd122d27377499541d441c3e9769884f200d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"69f5cf0dd02ce3439b937bc32a014d286542aebb85645338c56c866bea1d914d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"904f6b18b908ebf4f6bee39e7cb80b1fe10510fef3106d3f7248763cefd5e511","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"1d6a58651029e4bc3506e7054a0e9731923afaf4ccec52baac0add9f438dc5f0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3494d3f964d58eac9d8c40c9c4e624b632205f8aa3ccab8842041fd09b6bdd71","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fc52036b5cf9c7d2d82015b0035ce0d2a99ce7b51201ad22113bff3b0c291e7c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"19600000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"200000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"200000000000000000000000"}]},{"voter_id":"617937c4266a0f2e2585d37d5cd6bfba7cf4c140b08b7e7fdee3b3a8e08d5052","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2509acc08146306be1bcdeaf0341c10f71613d98af714b63a101343b2ac7de36","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"dfc1d9a2fc74440f7a967d511c13e3788e1728ed95b54a4c8f18fa376b749f00","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"73be1f7e83fb1f61d2479ad2347f4e86f16d78c6245d19b774091fd7e43086a1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"7357821ec1998d8b21e5e9e0542ef6dc1577933b825f6032d97433584295f330","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2a9de835bbe6103656549fb96bad8389c872c88b272e7c585ea60d112da5790a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":225,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"f0837ad29d4a602895bfe6ae3ab909e6e2e98612a4d153df60db7eb7ae0c48aa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d7551a5d68564271f4a351c6bce7fda2ed04b8e4c37741541fefecf15e36a287","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"17b1d503c7c6fae10bc6f4106f2be7883644f88f390c8bc4d128eaf0f7a83666","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"412d18aa88cbc4b8f79039fc6dc1ccdc3122ac9f234a05fcdf802474d54b1417","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"3000000000000000000000000"}]},{"voter_id":"3940ded2a79c6b18ad67a37d287eb5abf7a8a2f388a07d1a9e7654398961c77e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"797b0eddee60b4a86a22dd72e009c4577a5dd89ce68dfc44cfb7e0448de7efe3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"a0b12a2f220110c01b8dc0f596f2ed16689ed49b2b05fca2f6481267a2baedd1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"89904f59c5f1652f16d13675e197727e7c4f414e6abee4e4db393b996f6febea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8d7ba69f8e14eab2567604c1fe7299501ce9c95c96afe844e9c7a7e709276c45","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ea568132b0de7d2bae73efeb747b96ff717240ba68f13bf9b5538d1387a23a19","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1dbc329c35ea3645a2aff4940932ee552491819a9a12dd91eac6ee6e6eeb4c05","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"99067b6fb9d2991532910c7d2a5b15aac61b4d0094dcfa7b2ac8f0ba1b9bfb8c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"3311a8782754811121b198b06e97b6f192513f4b817a80f734423a76e5dc7ac2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ea3a50632c840f23224371c4245fdd40365f1cd92c4a0edcfe1b4205aeeabd6e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"oharanodes.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"ad99afc29ba51470ddacc72a907fcfb3dbc5e852e0912e3ab33811e7228cb315","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"32be94ecb363ef27eac86531145f110342b980ad47b5bab8d8968481210a605b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"31187eb2b9d331ec171bd8c2b077c28e1555c2c7a810db4b534124c859ff59ce","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6eac46d7bf3fdfc277ebaf3c0da229d35ff2ff690c59f9282cb18cee676923c4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"398af1f074deb4b17e59331e26cca95555b9f97a5f945c3d152e1410a2b8d5e9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"94178855619e1db1b60517cbfcb24a8040fa06ef069fde1cf327b94d62fb36fd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"3000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"b66eddf0109408e2219843a79615fa7aed85662230c86f3b49e3ce67c38460d1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2e0a4f8bdb97040e87582ac6aa213e7f259207b71ff6520f043194ea52567f64","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"frensvalidator.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"25beeb247abbdd57a434c84f20e285d0ac15f8f0f7f536976110db632603a0ea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"2719f07291753763a4b6b7050bc31aea692e06dc9b823ae25f11190fe1071324","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"ad320831599369e368e49b53ba57db4dff1bc7982e4cf82a72081aafc304064a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"239a8302778fea0163e819c8ffd67358b723b6d92608923b2c2cdaf0478a949f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"9702b78216f13fc8f52076f7b71f1998c90fb7dcefcd9283a5611e76df535386","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":180,"voting_power":"24000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"24000000000000000000000000","vote_positions":[]},{"voter_id":"773e7fc65a5f109f9bee2f5c91ffc585fa85bf9346dd6813492271a90b52aab9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"ed82f442c4e6711741f5f66bb9cac14224f54b73ef645f170987981b6547ef57","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":1729740231422,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"8987ec7bf6d8f200769b47c8cc715e971b0eed2a43a33d46b0ebcb05893db35e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6febc4e10c051c4c62c2ba06f413dc7035daccbf43ba50f7cde74b0fdb30d462","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"10af8566c11d18fcdd8014548e78f3fbe4d64a06e60b28c2348fbfe2b586f024","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"94287d6539cc3f7cc989b44061fc801f2d3e7f5adeebf50e857b0a52dab4f353","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5eb1bb60fa568aa0047c0a4a0e7c76afa1bc6adaa3b43be54b60057e918d056e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"near.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"c7eacc8cd7b1aa245fa1239dfbe4ca1fed011b4d1a49fdd2d15f3d03456e57de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"f4a2483ca749d299a962dc524700d9d8e9b02f8abda848c1e3f0162626440a43","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"041d31e3cac68ef16de9193a0ecd05d8f4d80d485d84168cc2e498cd36c848b0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"bcd20a73a7674609917cdcd2c8886fc6e8f424244afa00cca5b6f3828859661b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6dc4173077f05aeed2c35296f1ef5ef590b38047c705eb1f14b0c03ac26277f9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":135,"voting_power":"9000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9000000000000000000000000","vote_positions":[]},{"voter_id":"955796c59627b325b9122da80bb91948d3ba1c3cd1877802403e66abeecd7d95","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"c4af9e7e792949015b26c7041ce561a9c2d7eb09eba9e9a38216b5b291eac134","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"38e7d968a3796d6c8bc9657e5675a8fd3e2db880e1e61b3f22901d173c3da834","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":285,"voting_power":"19000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"19000000000000000000000000","vote_positions":[]},{"voter_id":"dd.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":1726916110572,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"fd212826abfe9407c793a4ba5fb56ddd285c625504d1bbfc7f992dd30b0e20b9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"dc16eb15c0e8cb16ea369b23b22c475c098d3c6730deedb02f26b4fdec2345ae","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":240,"voting_power":"16000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16000000000000000000000000","vote_positions":[]},{"voter_id":"0353b18618ab836aaf5f1f2f10e2ef20ecf219beaad19b5b5d34e6a1ba63105d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"853055aaeee2da3f8da4cf0e8888c172e7a2d4fed8038fb20ad5e487e005cddb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"d66054c5889551c464d85d6541f1ba7a98fd4059c45e1c05ba88f5f9cc6b9ea8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"657e262f996d4ea1e4ea3fc1672a83909672dce823c68ae98ea08b327d0c158a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5547ed00ab078368ba1230cdf4900fdb243832d323b5f58f1fe9934dc1e8f119","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5e10ad8fd96b8afbb36e8e849799ce5b1b9e2827adfd6979d3cd177f66299dd6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d3f5100f50fe7576fea0f4e65ca69f24b5a5af2a4b620ae7634c0467acf7b4bb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0512fe7a65a2b12709739d2d38304daa2f2f26a0540d6e4cc89a0e2d4d3d5575","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"56e489f527e12b53aa98211fc42af43aa806aaa4a74839a29e96d80a6cc5876c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"consensus_finoa_01.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"consensus_finoa_00.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"ce07a07ae93621005b5903a34536c79bedb775388e02f9bbf1b5d690346fada7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"c9a7647181fe241342e172bc22de0d8340e23e0b42f005c1ed2dea1251d899f8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"331a4de65ff7675d133097d60887d215006b8c22c0cb544eb1366407726e90f6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e218a8c3c6309415d0ab3caf8a1d92b860546e5afe5bac9df278a6f818057f9a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f17c91f5e7f24364d25bdb925335b28f3c71c60a302499c4c5fa3089241eae36","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8cccff5f1d40951be03ef48bbfa0c0e840429a5ec4a9b47c3ab44fa75968f5f3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4701f0ecd4bed4c3d0da51781c62d51f8d75382b9fe397b30b4516f704395f4b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"43e72e92b841b4d69a6dee7eb246ab0715ac4abdf810426bafc72812b9f9be45","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1469e35d59f82078f264d3acb769fd4d0596e9217043908f56231d5876c5a83b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":270,"voting_power":"18000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"18000000000000000000000000","vote_positions":[]},{"voter_id":"88026ed9612ef760670530936cf719a9c1ed941a9b2037347b3c00d2612f705a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"749b9e47d52511305c3dd7142bfd705ff8d42f7490b10f7ef8964a1f45fd9902","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"53f807d64a574da293b04f7b9c3c9264f70614a5f76ff33357f6d4772121167d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"913081482b6b36bb3dc6720f63b928022520ae73db5d25d48844016c6950bbd3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"52e7fe6b11a8d29e00f4a871829beef6db11eea951403a32f5a120b793a124e8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3ebf8d92a358e1b41116ad43776347a655a9d8359c4b403eb4b8e15fd096d985","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"8ac028f6b61de7b53858f4010fe7cfe0123130307138aa9c58070916227b5204","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c28e58c2dca82bb50dfc2818364fac2f7edb958a9ed7daaabc704c6484506850","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"dd36c2fce06f9729b713377bda681c8a8270c0ad5b627f99acbe5daf0656de64","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"c2f4f51b093ca7ccf515a6ac178d60ea3ae0841ad67d9936e93240081a9851f6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"30e18e86c24939472a1e9f103d92bb0b1fe31bfaf183576cb320b55a89b54213","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"780cab709ac8d76b9a8f0af5a258652a97943451b4fb5acd18d49776cf6c9210","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"6f7f6a1e29da4d60d8bff0fa37548b2f07016f1a0a6c5c24d04025691ebeb808","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"04287931bef54f9d89d10098c1e8c220a6c074ad781e1c5c9f4d5195b0414b34","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"734fa29022827615039e320580bfc53444a14b05f9596b3351b69ffb013e6f05","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f6942662733ab031d375130b65055f8f1931296af99e8aa21aac47bec1450a50","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c807d05db081db6687f39b5a6a192edc2aadb157703c7e3b59478c7fc3d4fc87","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5b1e0fd9e166a4c2c6500657766c02452fe80666f7e82fdb825546f9e5aa7fdc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"fe8a7476bd941adbfdc000101c5cf29fc1da907a4cab0c548d6992935f2be323","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0bb4de25a67d7713b6f824edc74964787c34555ed4ba33dad966e051f6b1a48f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"47d48c9349cbd5aa879d981ff3e240123d8ec787067b96077655a8d7bc8ce9b1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"65ee595525f90d2ae03982f73cb6e0fd38351e558244b55278249f40f5d00f89","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":1731301368381,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"458c8092d0ce14bd7a4888991f9150ea0e8853f6c04c5b85a797d8f373d629fd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"45955a324834403cd876b0f6a616470996bdfb1d452b167792df92e03f5f2cff","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"184da3a9f33dbc566a033631982a2f8662987f89edea9bac90752643a99c468e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"403b34ac996cca15aefb1abb82334629d09776d86e86da7566f517c222b03966","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8b41ac0a4e523373cbc18c4881a006c6c38dba6ffd9f3c616a9cd772b27a225d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"aae0f747860877ec2334fc538226f53e043dba796a65ba2e2beb55a8e5c73f74","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"591a42fd26c0db3553a45cfdd10410cdc580b028f8c3dd64c66a358ff2e8a9dd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"bec075061d6d3730f635592e6b1baeeea225fce2e6c282fdfdadc6bc4454725d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"spectrum.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"finoa.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"gfs-ventures.poolv1.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"06c826b8882bba0ececf2f575ec384dc61cc1c6437057fbb407e5866cd3603f3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c108ee446be7651161f81480822c404338dedb10a5aeca4af42244ad48a9180b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"faa24b31bbd2cd1fbbabb1ca36c8030c5aa5f3eeda652a12d25f788d41ecbba5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"29c778fc450b3372ff3749544992f2c3fe1722c25b2da520264a186a41fb5193","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"63b5128969e38ed740b3281bcc6020525abbf57670720e0766139ad0bc7f1bb8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"de75576eb4b185d6f483d13e45da751e699b36761a67f02419a7768794e94645","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8731464b3f621bc32b4d8ef03f577bd892dd907305b249018931fb47f7f908c0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a8b5e76c9b9837392fc596c0984e1821744b2b7845d0da40d96a75c3328fde60","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5ae7d21596f8f2bcc3ae3bbb430be5f438d48638393c7f9b4f4eaa3ccbef6a49","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"5e53e3e4ed08236538800f388019fb280fe63ea25834ca5daa9aed810e5b6ada","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"bd6770f68773ae3370fd987ba5da50a9831c8bdb0930ca3403f9746c823e7e73","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":195,"voting_power":"13000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"13000000000000000000000000","vote_positions":[]},{"voter_id":"c570c39ef05d4252adba606388596d69f6cb39f74a6c199f5a876595d94d11c5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b4cc20115a204e4c8b3fbcf1b7cf4d448c0d8ada108acd9902558e2da77061a9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"304a7bfd37ca7f7a8010436c7c0ca7a49f1f71a978fb9f7df1b9d538332eeb32","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1ea52dd01e3490820d2545d5f298e28c18254ffa74b4409dedf3553a483177f6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"a55dea66741d2b4ebca4a61bd98c0ca03cbaf0b6473950f2dd7789bb3fa71e99","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9cf61dfb276914d9684ac21367ef56d4ae74f88944ee7ac1851a732043e17201","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"409dcc41a29f72b2a8921bb86d22cce65412540eb8e5cc35740a7365853b2ef9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"01c45530443a814c411801de32274975c0417b13e4957b6b96be9f703022cde2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"fec07cd91a1759492221e878a352517c40ce7773d21067d9e9483fe5963ad80e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"4e3850f68fa93d677287cdef4f1f6b07f2a2c4f99959c154fbd27bf44b8529de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f01e43067c4bbca2cee4b2b1d663f36899773c99cda12570f120440d5697c7d8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4dd90306bf3fe8e715bf90422fe431b246a15511255d30c36c7edc5c8c934443","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"11000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"19527eb0a7f723b836cb7b3451a05cc0555683862b301554e23277f2662272b5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"fabianjeff.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1403139400","locking_period":300,"voting_power":"7015697000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"7015697000000000000000000000"}]},{"voter_id":"14552b1770952b0e1e526fb0c0f0f6977337d46d39dbb473f787124d4e5e15ee","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"9867ea08d088f14d907d9ec26fcb92caf903c6b25a77b002917c9ec8fb4200ef","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"cb6d60ae1d33d0640850c0f789c3a691dd2c78889e45580575ac034b87bdcb3c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"858366ab6be01a9f23f2b0995ef12da31fc0f33bdef636eb3aedab86000b4039","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"78233ec39df97f2cdeea83dc25207a878f2b6010f48eec05c834da03ee6c83af","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"1b2534ee7033416ed536d2d1d776408410791742866443f0f8e1ba9a3934b8cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"agrestus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"861429932b08480ca9eae4e6beaf3cee2d0640ed7a8b2955eeb462ad286d33b4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"binancestaking.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"a6d26985e398c5740af9ffaeb9e328c793631228da41cc87af38ee0aa99770ab","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0cc6b0ba4718764969c565da59c398caaba6dad4d75b7354a92221080018e1b8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3921d59929d52d0df19f6dad70f82ac4afdc76422d0827e4eeecc06395b14fed","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"62cec87ff6444ae66e7ca49a31943feeed94a201164e240725695619698c7870","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"55cb1cd72969dfb6847e29c03b31fddf4d228f1402824ea9c4d1b304737f3441","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d23570731443a539074d6f662afe0f7fe76417a7349ada3bb39de1ab731e1a72","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2d380e02cfd85f8b939ab12a0689965b72f763a0dcc1d759da04795bbb11bb8f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6edf4c0d8d6578ce8c0d3d35db9e6ed5425eb7ebbc2ff0dad7caabebabba7d10","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f0e77c7f794ddd17fa3d82725190763a965e7afa53ed1770f0c8bab345cd41f1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f5115938c6a7b5ba2c7bb48d0170ccd516201093e9c07d9cbf0dfa68a1f153ad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"017814f0dbff4c1aded5fdae80ab2637951a7eb22a50cdccf438bc1aa91a300d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"7f86966cbe527917e55e0ff27871797bf2fcebdf8b0fa0f1653df6ef38ecd063","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"dec42051f69e0c1028979c55ad771797bc42781d2426627e43f819e8b0308c8e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2d206c0ee8e3a31b3f8b9c4a990db7b03af6c5c21502773491906c43ce95aef9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"96b77234f3041e8993c3d2a4466586c92a750b341ae296b32d9e7db47e6c0c59","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"651102751a31dd23a9a6db8d957fce4e3646e8e8157e6b7c165668322171caa0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":195,"voting_power":"9750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9750000000000000000000000","vote_positions":[]},{"voter_id":"053d5559f94b48175da9f65867befe2a165846ed5b67abdd1be4ee788294120a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a3b4b04805c4bf45cbbc3620547e231b5463c9776021ce9960ba8182ce4cf568","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"cdd59c02a8d09de7744d6d108c235783fbbf08b3ef3b7f0b99bc44c90f28444e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"yobo_z.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3257705100","locking_period":300,"voting_power":"16288525500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"16288525500000000000000000000","vote_positions":[]},{"voter_id":"5ab140d2221672ff1f6c90d948d13a6e22dfc232b97fbe5fbc9f2ba0b6a44540","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"495253cc729e92aea99325e09ae1380e80e6b43ef3cb4f692f2018c867dfb80e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"58b8ee8a8e5b628e6b48d4d99a49307bf42cc6ff837832dcce8460650675cb5a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d874d8c8d5477f3dd4a81f7410665afe8f90c9b6e18facf7bc26a07a4953e8b0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5649ec01a1d0855cf4ca5ea37b46c0aed2ed0171b3a832e73c8fa380b32e8e9a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3677d5af605867f06f3f88ead4613530bb534d1f2cb1ba2e79d1a4692dd190b6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0999e054d23231fa8075c8068e28ff735383f8954f6b20b757d9ec0b3d6e160e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"359aea3d930ae6f9bb436a29e8dc6751c86804057f8a6da7d7b65b4b45a20163","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakin.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"5d54e98cfe17cad4bd5835510001281b8e68017fd5d0528cb5ac5054b0bd8a28","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"f8f8ee707de2dd41f5459ca9245147eda3435086aa6609d3bcacca7afda32aca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"40f33559d2bf5a34dc46f0a176586f9a6156d945532e46a71ba7710134526569","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"satoukibijusu.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3949596470","locking_period":300,"voting_power":"19747982350000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3908536250000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"15839446100000000000000000000"}]},{"voter_id":"pozzer.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4158992350","locking_period":300,"voting_power":"20794961750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20794961700000000000000000000"}]},{"voter_id":"helmangom.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"100000000","locking_period":300,"voting_power":"500000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"500000000000000000000000000"}]},{"voter_id":"yolima.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"500000000","locking_period":90,"voting_power":"750000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"15000000","locking_period":300,"voting_power":"75000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"825000000000000000000000000"}]},{"voter_id":"70c1b68d0e63229955c10cc1521fe85aa69ce74ff0ed81146e46b14525d0a723","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"61cffaf2ede2960f2f5c42725a5c3ee1b9d8c4c8f19b92190011822597f2286c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c2de8b99013c31050b274d77f6d99e7c8a78718cdad69a5561b2e5f3f4b359ec","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3a8c4a25c26b16aa179db0f523403e864d13fcb6fe8f454afc67c3a860b9f5b4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":45,"voting_power":"3000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3000000000000000000000000","vote_positions":[]},{"voter_id":"711ae8e59518ae9eb84d8323c08b8510b6a901a557a99b8f366d98c68e95d825","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"6d0cca462c8288d2194eebdea56b441eb0427fa1b9087aec091ae69cb943208b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5417b243f5e47c8edf6e3bb14739fc2901282755bfceed9f4d30a01e3630afdd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1ec72cdae4c26124560640ccce558082715bf44f3eaf9e002e6dbe0bad84f6d1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"6b1245ca8a8ff39743e8013d6785831a30a11f715bb6fd9f158ddc52d26f88be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3750000","locking_period":300,"voting_power":"18750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"18750000000000000000000000"}]},{"voter_id":"wap1.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"46493835500","locking_period":300,"voting_power":"232469177500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"232469177500000000000000000000"}]},{"voter_id":"f8059e22c67be82dc3c189f1a9ccfcdfdb157ee9fb8e798600947dc43b1abf05","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"87fb3e0878bdfa092084e000957fdd55501be0cf683c22b7809aaf6678c44105","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"ed342b0e0718e71354f1f5c9bf364e0a4ba01c3d924079cca3443f468f66d874","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"criptopepememes.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000100310","locking_period":300,"voting_power":"5000501550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"5000501500000000000000000000"}]},{"voter_id":"7982bf4b7fd2a75fba7c7ae7ef682791d5102e493158b26491a2119f4a893bdc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8918ba96cd3ea1dc9d97a4f5669b02b9522847354f707ca7660e3da5c8829ad7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f8af656dee213507fb14779067870c95d9ffd5a57b3ef9378fa13b85a81b7611","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"80164fde65fa9b7e3a9309cb7e5fdb40a94d1de0811f0cc1cb30f29458564adc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"fd1b6774df49284bfc712042c99608ef010bfc59ed0617772c41d11c33e9127e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"64759931d3006a008af90de61e4d4cb3d95468b69ae01be63c03fa9d2d166163","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2b65b54b408be1fbb32cc70fc7a0ebc4726f1cdcc0150feee4095ea5097cf561","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"dfd830d6b35aee5415c8ae5436cd10b95deace970141434fb64bbbfa4fc7e3a2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"7d5f49ae25465761b64a53ff8efbac94269c3068273ed66fab5eab987762d84b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6bdaa49f43e589e6915c1ce64aff8678a79cbe105abe4954486355c466352a04","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ab953a494fccb3a5996cfef4cd1535c424db5eedf3d1c34c8e31194f276431f5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"72723a1ce8858eb25ff1db5513cc45fa768423886865202d5feebddffa8b78fd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"38b26fa06a6f586156893d52e5440a46a7503f9fcb80c8e1bac05766ec7cfaff","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"0xDC068F2B765e7B73d6BD182E50e1e4AE511733C7.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3323000000","locking_period":300,"voting_power":"16615000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"16615000000000000000000000000"}]},{"voter_id":"581267e1c29b956b5f370839e6faf48b6948049289f9b303bdd7bc92ca0a37f8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a3e4d1f9359a08670c8adf05ec48c30c5fea4913f393fc1f4f5400e219ed50a4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ee1efab27573279b59c076e841b1cd36cebffbef0cd7f3315b5b4a536b670e60","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b95824696418c4b1000df8eb0aa74206081083d7c76ede207b071639b972268c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"17b4a973d3bce2153eba3ebe078c6d7945c4a9f31f9075ebd97c11cee91d409d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"everstake.poolv1.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"dc6d50a234b525b8315fa3d360385870eb1fc0be2da7b8535910406a061998fc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"6115106cd5873fe67c7895537c9f14be393d1d17f476188ca2eae861f7985646","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fea113a1e2bc2753df1fc8cba18593f1817a6b3e81065e5ffaef8cb63e73eae9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"nearkok2024.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"78188512100","locking_period":300,"voting_power":"390942560500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"243793232500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"centurion.poolv1.near","voting_power":"85754581800000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"snsmln.poolv1.near","voting_power":"61394746200000000000000000000"}]},{"voter_id":"65d8efce60a4a428ab91587c51ad4b5868c25393b8fe4cbd8c5292a16bcf800a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"2168377db8401dab21b3a25f364aaba7370bae972adb42e7b8074b8d905edb76","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":45,"voting_power":"3000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"3000000000000000000000000","vote_positions":[]},{"voter_id":"92e1c92cfe613c4e6aa789ab2175a4d5da1d939cc3c96cb8b6386850c1ed77a5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"phuongwallet.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"159558600","locking_period":90,"voting_power":"239337900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"239337900000000000000000000","vote_positions":[]},{"voter_id":"12cdca6113ef23cb19c5a16820571fd6a670614b283b31c15e3cfaa9798f530c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e07bdd07a19febaea5a02d5ed96baa5120541f919da6c9cf0472bd286ba765aa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4a8586f03eec496d98ca4e34acc6139ba54bb605df1844e5fbdea2401e9d6519","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"38615dda77d0ca19be35037f59a104595268620606d54d5011259cfdda0c3e52","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1a616190fe849bba5e123abade2c07997fa99be76a9b0b6171def3758aad8ee4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6336854890","locking_period":300,"voting_power":"31684274450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"31684274400000000000000000000"}]},{"voter_id":"b95b75066eb4ded1e0326b37100b4934b5a53fcd1bc579b5c6313e4118c13ffa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"66f84b2665be8d6eaad47d66f1403c7c49a82ac899348a0da1b452c219c313d9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"8000000000000000000000000"}]},{"voter_id":"d0f4e50101fbed91426ff5d9484d70910699c2e6f833614e56d8f6da1564dee6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"7b81ec482bb6ae18b43b279185601b6dc2614a22b4fa3882adc68e643a9298cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a759603b2906b888f02011a6e1744ce28bc9a062a9759bc3eed6240619fb11c2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ae46cba8067ea098a7fb02275c47c4e2d971106f62cbe80f3a8d508b7f01c4d1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8ab933f3c34638b6a2512b4c72ed3ecd6b953ecbcff08381c0734d47345a06ed","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ff868a3da78561e1ba668e61e9a48eb3dbe8b59e0283ce4115701220faae00e3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"a3fe35fe92cf48fe2b0835ae79d79f270cbb08e6d596566e00c8e7cc64d1305c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"gilbert_crypto.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"85063e3b8ab7f540f67345178b105f665cbe78c764f2e3d942edf2f7b93a53a8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"tequechongo.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"355018965200","locking_period":300,"voting_power":"1775094826000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"sigmapool.poolv1.near","voting_power":"798526253000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"fialka.poolv1.near","voting_power":"250000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"spectrum.poolv1.near","voting_power":"69181954500000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"657386618500000000000000000000"}]},{"voter_id":"8d050b050cce9dc4d563e0aec29b1bfbd8a33daaa9c1825a414dd127c44125be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":165,"voting_power":"11000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"11000000000000000000000000"}]},{"voter_id":"b39b52a0bb1cce31a2e9e0979c9ca830b0bc9d647493e1effd0119eadcd063f5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5944fb29764ce2015652b71a9f227f07c50aac0fd2c040072fc483b120e7dc96","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"366779cadb5a3f677d173fc19f83e269949e4b20c2b4f76c22ea5a2bd22bd8c2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5a362dd0389e5dbffb124b117b5207381ee4cb0b3a25a87ddaed99497b7282cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4e2c34d0bcfe1a22208c433663181d681ef5b523dabc58f15deb737714d7d2e1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f581e13e4754154cb65d55bc8888a926eabd87b72bf1b477df60e339d5332d22","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"520e4fe5920cb92ca5a558828f311872b500171af37e86939d1c8b6c0064f23a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f512fd82959f4dc6309c6ec55ee37b89acd8f9b8f1927a64639000a09c5de94a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"338794f543e468cbe878510513f4f053b804d2c7f16cf3bba9915c125aca7865","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"b77848f86f850f0bb3410db647c866a763dbcb3e212b36f3ce983b9cfca8f7bf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"7500e6f197175d63fe6bb329320610613cd69c73f2265e0ec6d7d111c24bd3f1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"53645f23fa05451377f090fd5be0c86378e6bd7c38ba4278cb0559dd3de83bf2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"stasiey.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2562800","locking_period":270,"voting_power":"11532600000000000000000000","unlocking_started_at":1727845268380,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"5f55c67ec742f4219712f384e0ad2179a89375b1cb71facb9b30423ba71beeb0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"127688ebf35cba72ca93c098ff5669d3b21519447934635ebde46ed932cf9390","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c8546fd655a069d04da742ddb13dcacdfdfbc8dd1adca65c20933b5046646abd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":1727954002434,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"428b9d2985f68362ea50c5140a62cfda4adb33072a4d33a192c0e921e719b3da","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"844353620","locking_period":210,"voting_power":"2955237670000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"955237670000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"500000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"500000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"1000000000000000000000000000"}]},{"voter_id":"28b67c5f1937b06eccbc9f54ff91bb2f39707e1799fcaf64473869cbf3062b91","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"885dc03ba460a7fb2b4cb2619d296e5e623897672a0ba19ba3336c15f8156576","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2bd36f58a7076d4af94d2d6b25e725aef22c5a772b541de04969217383c62d74","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"f3f597e0b900d50e3bae762c3b39fee23db58c1b83e8533618864e2c98d1eda6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e8bc0624baeefeae53d8da80510ef456ef3a347322fa094e612de773b4088925","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a19a1ea737f9f5287ab0ca8c8f96e979391af729acb181c222606f1bc5fbeed0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a971627532339ab09c7b456b773e61897ffa9de2238add850ba4596348654cca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"6cb050cfc1f21e73bfe45be82ec69b30b155fa5e4ad28c2255baafa08abfba73","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c9b78867b091ea43a1524f5981a38c0b9e1ccf65aa81f13f76674d25fa2efdb5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":195,"voting_power":"13000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"13000000000000000000000000","vote_positions":[]},{"voter_id":"696b648d0abd1845b61ba7441f9eeef16c6dc7f4dd948623d7f586b152a4c816","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"649f75c5dcab29445dbdf052e1e9e276947a1ed2bbce75d961c9c1053f5121eb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f787759cd01431376c94e896a39c742d08c49d28d36c996d9fdc5f28fceeb8bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"098f722a8fefba636a5dc9c6af0982c1bee04be46d651ac54fb6995d6095dde1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"972fc0566781e8bfeec11e7daedb13d31e8bc2c75b3f347c944d1aea223b9cd7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"793eedf5b42464a1693684ccd1185d126817cc01a7b8a7d9bef3cf56862a3bd2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fujiya.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"913000000","locking_period":300,"voting_power":"4565000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"4565000000000000000000000000"}]},{"voter_id":"58acbf4b7f7b926ac436ff8e77abf0fa75b1882d493ad8dff823c2d82b7cf5d8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"11000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"27ac9fdffb06b1aa2fca9d6b54cddbcd6b42c2d64fe79da764f1d99019bbfc97","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"956ea0eb5453c89a5d3577c8a38772038429508dcf3292ca00335159ab9a4e75","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ccc4f122ff4c8a855946e9ab031afaa6ada9842ee6341a5e756256c9148478f5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alumlabs.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"5d0475232d88f6137d90fbafe0de8e5f310c4099eb0871e5b3bfa36a11bbf152","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"350e470d0672079dc30e00d58fa4df938be955e8cd96c1abc4792e8a44a066c7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0x43fFbF682b61d1A8d7c3235eb724775c5d8479d1.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"919000000","locking_period":45,"voting_power":"689250000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"689250000000000000000000000","vote_positions":[]},{"voter_id":"1fc26af171760834cf7745f9f7ee4f87d2c9953154dd433f576d7fa376d4f9b9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2bde567dd1f9a173090913aaf637b79d4f6b20825e9f22adb218b4da3280d2be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"19df94eafd51c901eeb482d7842c9c6eabf760982b9180a61f23b4deae693f9d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"16fa3136a231d82be6dc4151e1b2bf5af69faede0bab9c3db89d8a61d6f3dcd1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":180,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"7bd462cf8ce8cebe5d0207b3c8877f7a5f081b44ae66869a912b6c69c2df9e31","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"03a03b9c00c17f0fad492f3c9706e18d05cf02f3170fbd695d1cea903b370976","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"e1d93d9d35a6685b89a8d490a4e44760bee71a8a011e2f76985fbe466462ee6f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f30497b3d806c7f657168bb8ec33a4076e74d20a8dee09892bc2c51e9d29aa08","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"11439a0196c4ebfa7a619a525cf6d4396f2db3b80d58f5fba7b1b67d578c30f4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8047bbbd226db06e2c013691f0510252ad056d18e48e879641de313ea0ea54f3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b303dbe825076daceae57e9ad34c638366a92955f13515411f38987968a2d0c0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"publicai.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"de9ea4ed7e3c0c0c7bd94df110c3582e88bc66a7548c9af3650e4e17f97f7f86","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"edf4dfe7a1b674ce90f11d5ee6ba4caf84fe5f06d2c39bfc8262ea4d59c20c26","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"590972a01161f9e9e83306a89a04018316abd177c120d09cdcd4f0e490e15d47","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"c12ac397fc7b2b2790cbf98ebcac2199fdefdd17a370d845e9d6976f9ffd17cd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"134172a1fd4542da0b6775f3438b7c9f4f1d2c349653ccc50d066aaf91e0f47f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"fc19ba0b33ce4e550446c1865168b243daaf28b213e550f276094b8507a4a90d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a798ecc53a312c5e8d7dd3110712c403002c16651a9938868da9a0d25978b783","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"dcfb2aee193fb82e8d835584cfcda72b93a2b888d730ee6fc30bdf4db0b67a32","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"d412062f84c4b6f62d8636285957cf15092950cf2a64086c26f092036a234a81","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"56262872280b0d3b7b9e876a5541c0165985819cd875d780115c128433b09e64","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f43f055f8f8ab4a19f1115b8f964a2714529833d464d67f25efe6c91dbd253d0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0ea5efd8dbdb1bb1164301ce7e765a3508376f0c981b0e1b4c6e31bc6f7fbb17","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"fc67fd4fc8fb0ed2f23d7c3e2652b1c05eb735d260ec1c8da825f26bac75a6e2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6ecb5bd9ff89776792cf5b67481c0bf2024da338eb3f26f8d0e51d90b29fe122","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2e7b32b069d7c2033765d124bb66d81b4536a9343b5313d7589b3c54fb8a5f64","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"54a3ba1946cef80f13f61a16985a83b37b0fa741f266e375bb31ec1622004708","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"7af7571bb8430a7a7eb36f683880a8ddc1c787a5bd6001138d16224e1f679cad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7403e27a12a2bad8a0b8b20ec58036969995dc12e4ed58746214244c323b9824","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"aef93c341b2c011c0d66c02c1be71944bf30b72bf95f7feb433365e7808a7184","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"577351b6875fe01cd21bae7a801005b9e0903e27980b2ca72674e39f96a3322b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4d429d6f231ede9140dd4036e583fba8382aa5c33b10ee0dae858b8223806cca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2c9091ab5cbe39e1b2fcb8d2d53ba835a4e3affc991876075d831dd5cda08c63","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a86e489578f1eeeb01280be825e050b3b146c6490ba294e2b7ed33bae64ef85f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"b95097c242562f7f559ba6258f702de58115f03476de58f39e7ba0b82457d3dc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"60215f937d7d1f3e8e64d9426887618d7dbb0b74b4039eb419f18e62aa4d0f73","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4eb8feca6650593dcbcc6d207ebdc79e1a2c5d7ca198ca10234b7d6b619adad9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"8a9a0d6251301f67ff14dc3f975aaeb60cbcb1b65c2af57faacbc9b02056876f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"ursamajor.poolv1.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"da9f16ec072ff6784975bd95355de433b474e35df547ad45bec8f893fb1af18c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"7201fa1ec8d85fdc3cee2a97f753008f0c16090e7a6d7e548153c18ec18886a3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e37642588eba06ca8d815ff29d634261ea0a2e000765a0f300c1313ca8f588f4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"ursamajor.poolv1.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stardust.pool.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"9e689570c168c03ce867dda3ee4ca178f118613cedf24cfb37e9742d3683f170","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"30788ba6602013dc4ad4ccbc89249f7033885592a45c86ca9ba90ab6c615a8e1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"86e341955db3c5b0c257a3adc6559868f727eb7337687003957e77e9f50460dd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c45eee5daa577588ba1823b5e50f7f6d3e6e0b89aaf1e906e08915c02ed5a9fd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"13000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"9e1f0e08609015ba44a98bc2bc65a36a54bbfe572f0f82af28b1c699565ce179","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"387dcaff91a38330ae4478e58f7a16aa7b1541a3a511f05312ba7d24213b4b85","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"12783c0f8b89ba5191493a504567ff911f6ed214bdb78b0938350aeb9a360790","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b96b35dbd9a9ee85c2a3253fe950c7caf1ae0354751497b4ffc237a060763f41","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"steepzip7808.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"715231890","locking_period":300,"voting_power":"3576159450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"3576159400000000000000000000"}]},{"voter_id":"7bb1c442ba8cf0eda38ea75f906e64cd23faf7a553b6ca398496b83efed4a912","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6712c9215a8d4d1785eb14dcf4263fc75c83c8272fb2fb0a1cec299d5cb88dfb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f309723c8edcce5c9a5f37ff13fba9f5e94df4098e20de6e5569a70a95362561","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"a16c12180a05d927bb632d1e866ae9b44e94e306110e4ada342a53aef0a0c4b8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7d69aec229766e146f142cabf984851f7b9a245f789af16c42f19bbfbb71dfa6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ee341bf8a845be7d320cbeff65338f98705110440e96aa77bafb76fe0d231d47","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c369077e2d67dc2fa5c9ab5850f998d612b865b900d292d585381e5eb9121d88","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":165,"voting_power":"11000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"11000000000000000000000000","vote_positions":[]},{"voter_id":"c592448235200dceba29176badb491ca62e88f370a9ec81211901bd911acc650","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2da8de65e1a884e8a986afadb161b3c7578cff28c1456480e6b2aa6ef18786f7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d4b5f44ba1bdf0914ca08b6b3d51276925094bc64002232f973c2658a202a8fb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d8bdd8fad8744afebe4afde79423e46893d8f07bdb008b859e5423cb36c9ecc8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"96ed22be26b1f9160d5c354897717c48f3c124d71fb530cd8a39ac1f70a9509a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"afe8f79a4a01796e071075c4c166f95310493a87ab61794e01851262ea31339f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"999539e3892eab4feba02402ae4a7da7a74f1cc4521bc64361b55f27b68177b0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1da415707b8efd23d2493b054c94ed60bd412de3bddbb25527904c273586e76f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"560ce982b8e570acf9904713081dfe4800350ee79443a5e4d2a748d06a77d0af","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8084bc7b451627f6220836f288ab664268fbcc35a539304707fb614e53d071f4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"60cf5f0a460867ac792a7956d2140be363e8a9aa8d1c4ee4e9dd1f8b4a474a01","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"bf9b93aad5038bcf14e8c33144e03dec59306fd7c83d4ce5e4fc8b298079dc4d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"84efea18873941aa281771c327d2c56eb5b83ed45a37c242d9616a59ad006295","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b8d00262ed76fe8acae642dff2e747798bca7b2b21613f00989bf6f3c82c1d4e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"89d6ad5e9d4f47fe272394f69d569fbc871695f06bcea749c5dd93f5c4e99298","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"eda649651fe662a9c3a3aca337e3fe29ac0855888f75ce1d83e29b94090dff37","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"263b38e1a3f0c8b958f81f7c869f21c814d39293655eb7b3523480f7e1979bac","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d5ece77666570b023363ee977931da238d40f1729ead49fe2ebe67cfe58cc65d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"137c7735965909ff7e2eb54bad7496c1420691feb0b5782c8db9bc178472d344","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"74b26d6048231e35574221aec27c89199d44901da7abdd1ef1dce2c2b413c6be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"7cd7853c28b29a8fd0087eaf77356eb7e42db747fd3712b3a596b33ff46eb330","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"b6bfc38230727bc1b44bec6be0978e361302cce2f46afa952f3f24513064113c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0768c53bed6e9ed8d39474cad73c9e0377423ca89ba52b1c56f6e72366ead8d6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ef7a75707bd043127d67c5c81a27ea75771ccac20d421c668a7ff42cbc274e0d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1b78269e86dd496396a8cdb03b4adbc977c8f0e6241635d3206ab8257e837c1f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"49fc2c8a18e1e483993d68e4f19d5732cacf0121afe2beabbc4bee05c6c6f755","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fdf3ce5381eca8a4da41fd3a1cd9ed6ce2b08e20cb13a2e55308cdc52b087333","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"958425ab8d1d060f38ca1aec679044a9a486512befeb2803338829ffe54d2272","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f1ca2ef54cf44b53825ac826a7f5e76c15073aa85c06913c0700618fdc1c66a0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"824218459378b259d14765d23d541e9fa74cc68db8177e76b17574e2f996fec3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":105,"voting_power":"7000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7000000000000000000000000","vote_positions":[]},{"voter_id":"18ab3f394757e517f81c79f4b07291817e4d37e1569b1288eb20ecba17ccd953","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0d68edaa380d3b43caf5e9889f01f3185ecb40f8d9ee21c5ccea8b0ff1576f00","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"bd69bfdda3dac26df4f063103276ac43c6b1cc5262905c7d971ff18f9fe6f6b2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":180,"voting_power":"9000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9000000000000000000000000","vote_positions":[]},{"voter_id":"752fa01aa18a8db4b86d41730a664be99cefb6532c5dd64371b87e0bf9d63e5d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"fa02e7b2668a034d0381660f5d94fab0d69c62882765e75a560cd31fa74f8624","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"c536fa5f98adfb984f927f9b0f77a0d52416ec38f013368283829bf19d28c48b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"62cdf59509ba9b47e163660636d8defcbde16f7cd2d1b621dd48e1269c876f76","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8e0530baf3dcf3684771c3d2c07bc0a378d4aa7860d8b0c13b7bdb86d7540537","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"eb465aab58bc08ce7d3a5388c4eb0b3e575b7f5ae9cad03776d89aa3304d1e86","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"7f2701b349f86aae7672eeb5558a5bcd45c84429c60e53d978fc79d71dd770de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"53ea2c64d401639431eeac02c871722e8d3001ec9e1fd5a47547c8eb8ecb5f6a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"260159bbcef49f178564505cbdf3fa5d9616d541ca7d58c87c63f8f8a7f6fbf0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f981efa9a7e9bc342b60ff6567474203a422c7b84f7a9c80c76ee7ea30651b8b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b6b4573659b5ff320383a04f8e8658b66ceb358f4c2161da60ad2883bda3e601","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2186c821d615fd467182614ebd73354044947c30d3e953902b60f564fb596887","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"804b08c7d09414a38b3b57a41c63782cfb5ab8267b5e523d1e650ac981a3cfde","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2e2860e67f0d62e07467c6bdd346397624c135f05105066bb987992d05feed41","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"6000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"nearfans.poolv1.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"4fb13f56bdb0966dde2483e6f46e375f82b9b33a9a758a603d5f41fdd53d862e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"15000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"cd4042d4b3c086415bc74de8b80efcf2be3e8e185b166b68cff11fa5ba005a70","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6a867970fd940fb241ee09337c8c6d261807b1dca49606098e038577e6d8d105","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"30fbd01de34e31bfd43fda0495e3cfe4d8e45840f28ec544b78532713d299eb6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"20a35f57280953e3642d3ecfc7d6f7df85db592028f1e529dedc3725bc82c5e7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"78d2fd202aede7660c902916971b77be2683f7669ef7004aadb7721189ebdbf4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9f1f64b479ba05bc9277eb2076facd1b15a00fb5ad6161a04f1d8c1e68badb97","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":285,"voting_power":"9500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9500000000000000000000000","vote_positions":[]},{"voter_id":"2cb802d5ba0a2622f5ccb8502419c4e1456529fb3c028a5918b530964aaa6d1a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"99f79d2684ce6a26812e74402f152d0c95cd84428973b99566f071bc91c35d0d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"031034bcc3bc3cb014d866ae702cadc0a7b6537a221491de7c4c5d57c5eec4b8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"949581373d9ec756de56b014799fdddc783c3647b9be19a62cd6f3c448100c3a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"8fba25e4d0f7876f16a9c38ef5394baeeb732158b4d25ee94087bdf3235b1a35","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1890c27bdfcae32cab497f36a863995a2bb54b3b60845245de07959989944c90","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f5e0720c9206ed39b9d20d97bdda945e577903f17ce2ea31533ca7aeb9c19fc5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1f06662965ca0e4403af827d12511023a2e10b7dd1dc504dd6e88ece694b1cae","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"publicai.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"1e3b8ad70d718aa9deab36e80c150ab76b1629987b6c3bf485099b7d0fd427ab","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a6d165bc9aa16995c8db9cac737567a36f76a66e0556a79b66d4f168d1775a65","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4875e1580dbf1102c5bba00ee2eb1312893917caacf2c3c9fcc2bd419fac522e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8f8915ee8749a1aa0e5864c398dea18854d15af608260d4a3bee6a75277e1a23","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ef9c686b82fc905ca02723c22ac76009661a6c64f394609895c2078a113d0227","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"56d8d6e362c65a8ccd5e1e4737cc424f08a9454a1a1db50e9d53df2efaffc5ca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"9ab864312f4790f2d00a78560a62852f506e14bafd3fa35e1fb8f25b86fb79bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"46301a73c8570bf44d92497faf975ccf6c7e0c17feb655f85f06dac7efd7aba5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"6000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"5a97f35372f2da01383980937440d6ab1e1d0b64fee3186136416de95fc445dc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"10000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"7023cb33e8f263f61db0fb3ccc1f6607585fb26ff7c36e1054375d567e112040","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"11000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"9000000000000000000000000"}]},{"voter_id":"ecdbbfe1e1373ab6d6908cc356d5959f2d7e96e40a1b0f9947d861603a432000","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"94de4b725023249e5e3eb9a24f41d1c1544eb7fe4e726f45d71e47ccfef20d3b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"3abac43efa7e3ec50a5b0f8c92d64b05775a37399f4027b5360a818a97705d84","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"13580b4121d74838ca47d393700a4bdb73d6f18c76865552f2ba941c7aa14114","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"37c865a80639dab5cbe9092c1227909a48a97484a4ec5b9192ee690c70b3a8e5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"87a0f5f7f486d36421ee75be87e4afa880e4e07609c71aecc314a8bbc964bd83","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0b39b39be12209feb533025924e4e2b3ad03236529355be22895617e7d9643e6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"eeb62a3aa614b980537d3fe702ff8ff2b576914bded4daf5c340a3bcd1ebd113","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"9ee6c7c94aaf752638b179c41b7e564cdebabb4f9d884c300cc3c4ed4251e8b4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5e23625d9fb328d395e34307f31566637e7851ae3820e05e4d7be96f02787b58","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b7b68d23b5d14aef2bdd7f823e91ad0ebaf9f8157fe90d219f91350b452eb93b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5114c59696a0dad197bfff09130c75f0a6d8cbd8cdde8a6830a55f771c39d2c9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"3c9136a912b1bf7a579a9041d7ccd57e12bf568c1541a5992dbacb12e8880d7f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"d61dfa4a90c507e7a8c5b2d991b4c5d0fe899dd2b34f4aba779769bafd89e521","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"34a1d4fd633517bc2fc4dbb28b44029fa569601a44f06e7ef6e21bb11f44b69f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fdf1f8ba05276e4ca35e183f568d41fca0a6d4742edc6cebfaeda6a6741004e4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"581c9713324e185bb5e089d78c50bbce945ed5e94f50efc9510a07bf0dec92a5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":225,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"e2459c14ba6e77e8281e78b8238c733b6cae669ad5c092192da661eb124af123","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"ab8c4dbfc5319f9b55c545d16f72874720779b13a030c2c96c6e3f04f876ed1f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"4bc6c6e7277f3e0c7b959fc1c471e611f643618630e6b3d6f8df4955e22a6ff3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"0da2b63c2fe5cdaf30785b82fb978aca1f514d9db27eb530132639d29f64e2c5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fef5f6439e828315de5556a5a0408d9400a9c96b5c66b90552ecf02b51392d84","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"9045ca0cb82c39b15b17695fc3581a7e57bf5e3769911c6160bdd3f2cb7f9fe2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":135,"voting_power":"9000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"9000000000000000000000000","vote_positions":[]},{"voter_id":"35a6d521fa6db19b65310c9b60f7b914bb71ba6dc05a8ecb0e27ff38140704b0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"3000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"lonk_validator.poolv1.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"51071377511e5865511fe3046dc4915b0297672ede791ad30b6a2cf7bc3e6102","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":120,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"94138351780d90d6b187b398fec24d7535d9262fc1edde2512e46c5856bd4620","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"fa7cfb6e948a7d200b705be5aa210c4f6edb321b7c40277256809b9ad4afd5bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"0a8ced2c030aaf89deff67cb9171026240c9383897ace6bd23d5a796d2de1c3a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2d8fd5f7bba3be0a401c5861667b084761f34de4f5ded9c46711eab184cdf47b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"25f57c3a25a706fbdfa7264329b5e13313829022adc517c05da849872b86561a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1c07371ab41c25d020b1be540b708a0c343217ed2b414e3821c1b455081cb3fa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"de0f71396d131cdd51b4213678b39fd578a98d3462ac27c76bb4a2af8d74d77c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"c6ea0d083074fc708fdebd97f0e2a50be09ec0d4cfbab958e0cf5fb7490380bc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3382657000","locking_period":150,"voting_power":"8456642500000000000000000000","unlocking_started_at":1728737361510,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"fe6568ec104e0b6dd1b2da488675a79e562591b302e3364daaa7eef9e2dd2e98","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"bf1cef6dea2de6d4246d4c4d106fc2a5d0de432b559df59e035a117213f40a79","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"33e5927e9b0b9bd5b6d22aea40f133f4fe4ec6ac2d0c2354bd9811886ab173a3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"59027400a26e105fb95bacd5ddd00352494cd080d631f05595c4550870367f9a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"89504bc30ce010a1b7a2a4d8a5c4efec79ceed68efa5040853928cf4966eb7fa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d7fba1b66a6da1f2af3f99fa27c54aabf6efa70128371b4488a39bdf159e07f8","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"63cc2a23bd4fb0c9fd0802873d6536204962dad14796b4295e9f6982c364a564","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"3edeba67f78436e19beffeb44d6a488905cd1df879dd62fc05a4a4e5ebb39562","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"6e8ba11c5ff3781a5b0dd8c51765104b8b041522b34fa8ab112dda618af9d4b7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"20d1f4d9b7a25d85f417d936ba78a1f60536d88e809eff23e00dcfa4931fb07b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"77770326000cc3b7971ea022d6454111ede7a8717a65dd9ec961dcd90b896893","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"57fe52ce5e1004ba77ec5e717c04a8a774144ba08b6488f95cae80721a5b95a3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7412340cf0eb340eea19cc8d7535bdfe13d07f058d7fd129572a1550368079d2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a8041d4972bb95b130a46628c3d3723d570d15e7447ce953bc32775cce0572a9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"035ed71d46ba30594e7885ccea858f67702aa6a41fe6cdc42c3146178df56efc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5af22d303baead509cb1bc62754d9b74645c1c7a6cbe150de27d56243208ed37","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"414aade1d9106e37b238b11dbc2a96c1cacad6a1561f64deafd4c6494afe106c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":285,"voting_power":"19000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"19000000000000000000000000","vote_positions":[]},{"voter_id":"ac559d22697b15561e132848e8bd77a006bc19cbb63d9bea8de7938d481a6872","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"06641af629600fe2ed817b077cb4a51f7236a2291a76f60eb5f30c471e98d4fb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"ursamajor.poolv1.near","voting_power":"6000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"88ceffa65fc65b12d07c9bbdaf6997c4119222262e6dfa51811a3b7110a840b3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"16000000","locking_period":300,"voting_power":"80000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"80000000000000000000000000","vote_positions":[]},{"voter_id":"d8b7bc5623e24b15aa33667faa021ac7be40b0fce636fff149e745f03668ee93","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1e6338d7a9e6722c322b75aa58ca739ddc93f84fcbd6faa8b2908537ee661b34","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"621874f42dc8a92b03b96c7215d139a371733b5e112ba81c2095a3d9cb742db4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"ab05985f59778516e33410b4e903c10f5900ed8f368a5df3c4bcce09e2c2b4af","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"9b0f029772601a97ae8911f1986381273406d7539a084ab2a9dd05070cb8970a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":180,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6000000000000000000000000","vote_positions":[]},{"voter_id":"8345d207889673d2184cb3d43bc454cb1309de9771748feca8660695f09d650c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"7c8df5a614dd03bc7032e5f8cda085bd8fb7949b07f634c7b7d5bd8d29e752c1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"2c4dcd85319450df564a5398a4ff540d4b29bbac9d3d685f191f2c1c2609961d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e2893f359d80129b110dcbaf642616415ae69479a598f999c3773795b87babb2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"171b60a93b2b6ec36d23dd4da4eb2db7be12fd9e2a7a9c817f1f57d548236db4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":300,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"6c6bb3046b593fcfab01023ecb4f0949e661ef6a9303e6f1feab7b046e67774d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"25c9134f7fdc3beb5327ba1736f036c134dea5b38b932c5152617cd6da0ca8f5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"37960c14e445567e14d8d95aa6482f0c83c346d4e470188fc52def85c6d0f40e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4919083710","locking_period":300,"voting_power":"24595418550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"5100000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"5000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"delightlabs.pool.near","voting_power":"14495418500000000000000000000"}]},{"voter_id":"05ba16092ad6e4511830472822fd24054ce78298345a6b3f0d0d81c718f75f3c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"a53dd4a9273b537996d27adad820f326d7c92247e73f72e5ad4c950a0b2a5fac","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":165,"voting_power":"11000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"1000000000000000000000000"}]},{"voter_id":"3cd7e097c91412aa03ced89ce8999bccef522f8d3c7dad9708be10a1db75fb14","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ae9993c3f4220ae580f93996814590c5870beb55b8f20c826ca3a01fe94cc665","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"0fffe694b17604c525344045af2325da740b67f3e4dfcd102b8b284df74aeeb6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"551744580","locking_period":300,"voting_power":"2758722900000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"2758722900000000000000000000"}]},{"voter_id":"3f2bec6ff023a1e8af5dfe4475ec1e4565bbf03a4202e846d22c806869d038f6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"7cc0696ae18072b77576bb98ce21b2379cbc1786d090abc80074087f4799f1d9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1d736861fb23a12aa8bf291bf61dfb4025e18290be64dd2dfae7d17f1ded25ed","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":150,"voting_power":"10000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[]},{"voter_id":"bb7d6b1b86a99158217e0acb447f7aed871a347b2eb9221b35d181238687d525","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"650b182ad2a34abfe873c85d87bb48aadac471088d4f04cf9e0ee113a2830689","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"2394aa987d720b6c6d7a550827bee05f7ba85bd637bc398ed3953161ba4e48e0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"16cc9c22353175639bb477993e20bae2a8d44f10ab8b7cc8f665fc4f1591b5c3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6d033ef4039162e42bcd7cad32394062302871d61fdbfa66eddd4a7f8f1f676b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b409b131f7f52e47c8385a155d76f121cfdabfff228160d7e661234d9bea7d3d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"c5aad27fec4519a12ba439b16edb6cd19a10b2bcc7b08ef439fe21594582ff6f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"184645ab40ba5fa18b77067d400aa8490f1bf882ce0afc1b7cd14d1eda6e73c6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":210,"voting_power":"14000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[]},{"voter_id":"5f01c5eb8fe66b99991a9563ba36d94ec41f61a95c0877bd2302aaf60b55dd55","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"efcc44df4ca7f33fe34c2d46b6b2cfa5c5c36f0d3c57f3641c76436e8165aa86","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6a92e3b7373bcc54cf305416ebb8cd0f48ec0e7179ffee8128a11ec93d0548be","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"5000000000000000000000000"}]},{"voter_id":"9c5e7f96bb77be519a14ec554a61186eaceac2ad3ad10c5f1252edad5f978b26","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"d51eadcef6e8fb8ed68a6957bc63a30cbb333b42c18feda1091a5949909b44ba","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"da79b5075aaae16925b7015687d9eaffe75b463254f779b5f9b4b066e479aea2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d4d240926943f46a61233aef6de9d2b04113f564a4aa71b0fa1ee9a2ddd0b6e4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5e164fbe9eba8b3840728deb3dbc21d182cd9222185664ef6b131f5cbc23a7a4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12000000000000000000000000"}]},{"voter_id":"6fc798485e717774ca4190104d5b2d8436816db202893e5705ee20122840a646","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"7ac59c6aae125d1099cb4a7532654dfd5820d3308d838019e869fda570d96c3e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"528034cd9a2d62d025a5a598abc77f0ed56ac42175690557649fdd04861bf960","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"3970c9eab77e1fc90680cb655a723b8e74f72182aea98ab128c174be97dd0900","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"108888faf531d77fccef1dbface1598f5a8612930b8ee30d73f8e6750f8285d1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f4d9b9891a8a150815f0f4bb34820a104f95b4f0c7cb5cf5b4baf91272522f23","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"01a51432d2841f2ae7d47f9c3341422358147ad854f7ce9fe80d92adabd9d28b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e59d08b13cbc0026c3f0679bc531eebea9676feffdd1e18d17a8b8bdbc0a1717","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"378f71d7f63cdabf2bc15008797421cca742027a51a903b18d13c8d08e622669","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"nigelgrif.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"11844140000","locking_period":300,"voting_power":"59220700000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"59220700000000000000000000000","vote_positions":[]},{"voter_id":"29d628055d4bf4e1d4dedcbfcec782413396ae39647965a4a3fa6a4920f5063a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"560242f95b95efa493310a4cf4817a01de68dc7255bf6a5dc1c888a64908ddc4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"c1aecc4eff6a258e393fe225bee9440fff222b5964b9c03389f414211bf7923a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":60,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"4000000000000000000000000","vote_positions":[]},{"voter_id":"88564614e6efc575a5cd4933eeed5829fd3724a9d315736b12ee9df4bc3e2155","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"184e7bb7c10a86a7053682efa687617f91cc5e61bf140d0f2099bce6587134fd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"d309b4ca65180b2d16c832d93189717e2324da29b866cdb4a884fc2244c8c4f6","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"b3e2069deb7eb9e5153b1d4646cae13aee9d58aa1bd224f9ff232fa78b1f00cd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f6a41f0d45f63a1ab91cb68edc872a59b399fbe3abc211c567a3b67d312952c2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"c2043019d508016033dd677dc09ae75e158d6a99a1370949296a4597762e1884","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"219a80486953e2c7b106d34d71ef6e727a69e85464cc8e4c80395777317a4ae7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":165,"voting_power":"11000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"11000000000000000000000000","vote_positions":[]},{"voter_id":"0xfA8856FD322c1EFee9268aFE1161B66D55fE000c.evmp.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"981000000","locking_period":45,"voting_power":"735750000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"735750000000000000000000000","vote_positions":[]},{"voter_id":"e708da32a799ae3d1c4c96e5430d367ea1cb0ba3e8ce333e0c712ec230964c7c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"370621690","locking_period":30,"voting_power":"185310845000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"185310845000000000000000000","vote_positions":[]},{"voter_id":"f18c2a44526e39ed4a0b15e3a89cdc0e7a1f72c5d450fd296ab805b775164f7d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":195,"voting_power":"13000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"13000000000000000000000000"}]},{"voter_id":"3152f891de86d40d96afdbab8fd744335f87846184cc1ff80ec5182b6e5f91cc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"64927b85224261392645eed5e16d343ab702a0ccf672900fa45705ccc7fb53bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"5dc1b7be64c2ac012ea431949927d7b48c5b3fefa0ee4f2348fdc2fc54435596","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":120,"voting_power":"8000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"8000000000000000000000000","vote_positions":[]},{"voter_id":"5ee1992e99dc4ceb732beb6d2aed958d5c855c4576a21483714cce314333322a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"134b23882c7fe059244a893c686e950d6d3af6cfc8426cf9adca8bd4c59e3958","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"mjt69.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3670430779900","locking_period":300,"voting_power":"18352153899500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"6000000","locking_period":300,"voting_power":"30000000000000000000000000","unlocking_started_at":1730837665884,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"dragonfly.poolv1.near","voting_power":"18352153899500000000000000000000"}]},{"voter_id":"3bcae1f4bcad5fec7fb44a94eeff3906be58d5e7785fe9fb000d8c2ae30b4867","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":255,"voting_power":"17000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"17000000000000000000000000","vote_positions":[]},{"voter_id":"daddf0a3ff32bdd992b6f90acd1e076d44de96eae317a2492d7a854952783912","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"18000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"7fdc9ec27bf1d33019d874549a74a76475c9f91af4748a3ff7f93d2107465398","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"909155dadd03ed49a0e66b374cd2a6bba837cc78de148e301bfb157e80638238","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"55065500","locking_period":270,"voting_power":"247794750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"mexa-staking.poolv1.near","voting_power":"247794700000000000000000000"}]},{"voter_id":"8d81a5be73da5bb81bb3972bd4ba62e9f3f6a46ec90e9b01c37f942e4e49f837","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"302ccccca97fbbfe0a697b79ac4e4d5c133b2070af796815ef8feae1446614e7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"14000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"2000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"readylayerone_staking.poolv1.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"9122724b26d2a1a75e3a4bf34d6f731fdabaaeb9ec475f8e929bbba7087356bd","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":75,"voting_power":"5000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000","vote_positions":[]},{"voter_id":"577a44eb1445093838f070248c81e7f04bf601c8e6aa5aec674e35ae94599fe1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2f7aea4394b33e1c9618f872683e09359304444896780550a761e515bad2e545","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2dc84c98ae6539130b6fbbbbab28d65bac75d036f0c659d53ed64a0b56af9aed","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6966534938.tg","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1554242310","locking_period":300,"voting_power":"7771211550000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"7771211550000000000000000000","vote_positions":[]},{"voter_id":"91aa7ee5bf80249914b3eecfffaa9ac5267fb637e0436c9e2016442efc2d9f6e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"cd8c1ae490113790271e545682861bec0e2fd678a9cf683a1b84637d5ea958b4","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"72e33ae6636584d80229fe602cee4a84e75bf94c465933673c967ab585422925","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3000000","locking_period":300,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"8bfc4bf88edbcfb31bf166a2bc6b8a1c380cd4c1910fb83ac9a11d0db96b4e3a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"1f4d03d56411be001311befd5bcfdaba2ea86a8a2e6f19d458db45e506dda4db","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a2b16784d1c8857f1b105f278aa47d1849bad39a3b420135da6fdb8398667279","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"fc6f5994a75fb16551d77e38327deb088cd393ac2f9bbd1810e7a25a8c620bc5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"12458050","locking_period":300,"voting_power":"62290250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"208522290","locking_period":180,"voting_power":"625566870000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"62290200000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"frensvalidator.poolv1.near","voting_power":"625566900000000000000000000"}]},{"voter_id":"53e9e63b63e056388ab46cd368719bbe92cf75426bd82d847740e0dbb238de7e","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"6f2e93d7468ed83f9ad12c73070058a240880cd6abf8e7cc832c477d19f729dc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9c2ac31195864e97f16efa47a80bec780ecf5c80113a3d0f048208ddb45c6982","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1653ffc74b5114af4fa7dc65b5dcc3593572237b538f79a634e9d50167b17a4f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"95cc99e6c34be962b799a4c57147ec021b291d0dde4c4eba7395fca3a224312c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"486f2b50286a9a9ceec8c117b8a4f4257abf54eb6227c7372b97193e6b57ee82","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"66b50516e9b81a6bcefdcc77b7252e9efbe75a7ecbe5547b12cc32a2d2b2340b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"da6a0b642ec2cc46616d614beeba0619d279d613f7483cda5817262663e16684","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"883e6dfbdb97b9fb819c77bf08e49939d4e8ad8077a412a007dbf14b09db8ad0","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"18d80f3cba5e9cdb39f36be8b82d9f5b329c766a4a1d08ea3c139a044c8b9f76","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":225,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15000000000000000000000000","vote_positions":[]},{"voter_id":"5d562b8c5f219bc004a4589f401bbcdeea1ca49f774f82b01c11db80acc74fb5","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"32773ef3354c91de4210999243c8a3959945c5aabe5883462d34136d3687c5d2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"4000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"4000000000000000000000000"}]},{"voter_id":"fe9ac63e88231099c3109bda7efe172400c4a26d05a5184d1fa55bfb023dfe08","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"2fb66201ca05646d7ab673879494c6b41f6edf9bbfb815673ca6178450cd0109","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"46c0713da081f4b5ab7342957c4e8839cf0ea844b30bcd2e503aa41ef35498cf","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"147991100","locking_period":165,"voting_power":"406975525000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1975525000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"400000000000000000000000000"}]},{"voter_id":"enilsom.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1725019780","locking_period":180,"voting_power":"5175059340000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"40000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"08investinwomen_runbybisontrails.poolv1.near","voting_power":"1753818300000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakeseeker.poolv1.near","voting_power":"1421241000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"2000000000000000000000000000"}]},{"voter_id":"220e66eb1fb826c83392fb45ca200fd5ae880923d3d6a946b4a07a41c335ec15","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5386b447cc3f36ba9a527af864fd408791869d9e31240b6e689969980403b8d9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8f130f1775efdfd281068bc34b265eaa8fe4d5f3467549f0649b71a6aa559f9f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":270,"voting_power":"18000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"18000000000000000000000000","vote_positions":[]},{"voter_id":"932fe9224879bcc29d24259ed85f3ee1054c09f6125ca4b22092fa3fac8ce4cb","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e1f695bc9386ef9aac1458b2ef77ebb707c12d16bebdafe76aac4b147cb035c1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"aca2e0f014d3c569ac0a42e2b756895698f79bc913304789f977ca4b1536bc45","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"319735156850","locking_period":300,"voting_power":"1598675784250000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"1598675784250000000000000000000","vote_positions":[]},{"voter_id":"90e6e2155af17b1ce2b657725c45e073d0ef4fc3c7732ec807a1f984358b3f30","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"f0d414f84a5e73061c3a13957acd21a31482204828612ac7efcfa7a4ea2ef874","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e40d87f3438933b047637ed4496d2aa3260278b8151fa94facab221870719c27","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5687f214ba1fde7c53f3fd3425a8cac6d262d9a5348f17b1fd35f1868939c5de","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"53d78a5bd2aef5e1eed24f4650f34e56950e447a807442df2def1710fed7fee2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"kenniii.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"156234490","locking_period":300,"voting_power":"781172450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"781172400000000000000000000"}]},{"voter_id":"a27764aa0c4e1d958c8aa4daf47e82f660978534f272f7f7880633fd7a1da55c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"2000000","locking_period":195,"voting_power":"6500000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"6500000000000000000000000","vote_positions":[]},{"voter_id":"269d1203a58d059e0de5dd8239471e5dad46395161090783c0ea8a0fee506a6f","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"d6393612a2ea1a363c2f2576941158fd3d76043c6fe295dc5e2ccb44c44c6b88","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4cb0952702011c95172829519f932a380d1403ce527d168a10a81649b511caca","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"8cc6f47501992c8a7b6a95bffbb8c77f63abc53998855136082003fdd97f62a1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"cf391844586e97208c649fc529a5ca577b92fb4a704de2713c6113cabf9a7fad","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"be18b977d8b955f25b891bd48a15148f1487d2d854b63e3115b0385235be77b7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"rawkilt7666.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"65378236800","locking_period":270,"voting_power":"294202065600000000000000000000","unlocking_started_at":1730202185556,"is_unlocked":false,"is_unlocking":true,"is_locked":false}],"voting_power":"0","vote_positions":[]},{"voter_id":"1997bdb4cc313efbc55bea1914f9198c744fb7648ebe442aa1638afdc8d72b72","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"drocacoin.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"6112112060","locking_period":300,"voting_power":"30560560300000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"30560560300000000000000000000"}]},{"voter_id":"brightport7464.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3121690130","locking_period":300,"voting_power":"15608450650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"15608450600000000000000000000"}]},{"voter_id":"a8b1b21c2831afb89191bc164055d3d4e1794a62e88f2bbee3bb0c57d134d435","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"5ebb32c260ffef7481fcd1b2f1366e53ca89ad0d4509079af2b6644384276c2a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"1e4a9edbd3e540e98e556ec8155c329f0614d7dd36019553ed98ca9b16504492","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"b703b2824c63ce4608b4296edd99c5cf4453f6263efcf83941961fba18649daa","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"5879789e575b68a1473e603b1fdd3b6677e294f9ff47166370455eeeee44ccbc","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"acda0f5435d49bac335cfa2d05562d5d47aae55ce752056f6f59a8899587e98d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4fed5e6fccd878ce58f5f9d1667eb2b373f2e3bf14138d3d157e65fe762a532d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"lavenderfive.poolv1.near","voting_power":"1000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"5000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"everstake.poolv1.near","voting_power":"14000000000000000000000000"}]},{"voter_id":"6293d69adfd8894703a6cf9e80909fd15ef09cb8b24bf1826a329e27d0596d00","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"a85dd91380a1b4600f7acb1746d9c1a20289e14457fd5b30d1788690ac4ba978","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"28421d4193047c854916881379f8d449a5cf4f761d0cddadd7f7724a1d8c089b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"f79a4b8cca5dd5257f4eb4537b6de3668b318470784c936786b42e7e1a8e0513","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"4af7f238d0d22b44423e3d5886e6aaf28ebe76434c5a2b1871a22b4d3be5fb7c","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"cesarminoru.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"28683910","locking_period":180,"voting_power":"86051730000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"86051730000000000000000000","vote_positions":[]},{"voter_id":"5b1bc6c9e87ae7ae1848f1c2d027a8d8b8ada0def01fba2d43fdf50971c70867","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"4961f61c155ed31e8f3b4b4e8566cf0030dc7fc6f984f805345551fdafe4f8a3","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"b2812b94059352e0ca4ce3f43e929abe82a7d7451c80fcc1821a29a229a963e7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9c35b806b1a6239c6e8fdfc0aa3330253aab1d18a1ae847ae8fb9fdde426cef1","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"21974e7bb61a3b60e16fd97cdeeedb57f282901eb89e0cb13f7aaf8b2435348b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"canvithien11.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"277413650","locking_period":120,"voting_power":"554827300000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"150394140","locking_period":135,"voting_power":"338386815000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"893214115000000000000000000","vote_positions":[]},{"voter_id":"ff1989020b32bd12221fddd5c4390c24825c10d292594ca68dc8b268affca3ea","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"a4c96786a0f47deca5588e93039e60e1c4384aa3cc7aa1c3c33c506ea354bb01","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"9945933c2a0449a33c7000b23f25662e42b6cf198985db54caf75fcfff679d29","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ac861cd64e8e0e9ec5d2b0fcce6c7805b635bd5c2ed23517f5fe330b236ad3a7","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"ebb3e4d66c8df11e917886ba3e9158387282750b5e0ed341be88276ab904cca2","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"20000000000000000000000000","vote_positions":[]},{"voter_id":"d2373b2e6a5738007d57e233082ab47042fe47c70df0c8c421d3c99a7ed5b666","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"9dc15b9c447653923e7f08570adefcefef774ef6c94a12b7013c6f8d5c434f0d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"e718f141c6b4ce9d6f033f9512df3a9e59c4d1afed0d20e150de58b6c59a8966","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"a53049b9a78da7b5b355e580523301fd4d75f2fcb963d53e6901bdea7bf5f301","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"12000000000000000000000000","vote_positions":[]},{"voter_id":"gustavo_paulo.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"46513950","locking_period":300,"voting_power":"232569750000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"244569700000000000000000000"}]},{"voter_id":"3990bf7e9e4dfe600cec1bdcf2334c169a4885923aee77b7b86d44c16aacd415","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"thepool.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1166667000000","locking_period":300,"voting_power":"5833335000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"nearweek.poolv1.near","voting_power":"5833335000000000000000000000000"}]},{"voter_id":"c186d04bd5c9669566e982f67830b1449a3d7097265090f6cd0b8588ac48207b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"2000000000000000000000000","vote_positions":[]},{"voter_id":"criptodru.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1624186620","locking_period":300,"voting_power":"8120933100000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"8120933100000000000000000000"}]},{"voter_id":"omolayom.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000000","vote_positions":[]},{"voter_id":"vitallibrary6200.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3068492500","locking_period":300,"voting_power":"15342462500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecito.poolv1.near","voting_power":"15342462500000000000000000000"}]},{"voter_id":"b667deeff327766f4d87495b3bc42ac775bab6d9b4fd9e148c6f7bcb3867ab87","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"5000000000","locking_period":120,"voting_power":"10000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"alphanodes.poolv1.near","voting_power":"10000000000000000000000000000"}]},{"voter_id":"85ee65913d3c1b7204775d6e7478de90973b8f606e0193446df5467210d7849a","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"628717730","locking_period":300,"voting_power":"3143588650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"3143588600000000000000000000"}]},{"voter_id":"nearstreetbets.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"75000000000","locking_period":300,"voting_power":"375000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"astro-stakers.poolv1.near","voting_power":"50000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"cryptoblossom.poolv1.near","voting_power":"50000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"115000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"50000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"namdokmai.poolv1.near","voting_power":"50000000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"60000000000000000000000000000"}]},{"voter_id":"vvr.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"53675901290","locking_period":300,"voting_power":"268379506450000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakin.poolv1.near","voting_power":"40709080700000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"227670425700000000000000000000"}]},{"voter_id":"pedrov42.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"591926520","locking_period":300,"voting_power":"2959632600000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"2959632600000000000000000000"}]},{"voter_id":"ab9036e2eefd2084daf95ee1647f7ba1dcf5f61367d86c96dc63907b766568e9","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"101492900","locking_period":180,"voting_power":"304478700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"304478700000000000000000000","vote_positions":[]},{"voter_id":"nuevanear.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"40921210","locking_period":60,"voting_power":"40921210000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"30000000","locking_period":30,"voting_power":"15000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"23000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"piertwopool.poolv1.near","voting_power":"32921200000000000000000000"}]},{"voter_id":"p0k.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"53099448500","locking_period":300,"voting_power":"265497242500000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"sicmundus.poolv1.near","voting_power":"265497242500000000000000000000"}]},{"voter_id":"djonecln.tg","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":30,"voting_power":"2000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"antokcombine.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"975580000","locking_period":300,"voting_power":"4877900000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"4877900000000000000000000000"}]},{"voter_id":"luisnet11.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"138470000","locking_period":300,"voting_power":"692350000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"692350000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"spectrum.poolv1.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"3380805fd17c737fba9948ee8dbfba8a4de77c1897ae9810f4da098dc6cb9721","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"142470000","locking_period":300,"voting_power":"712350000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"444300000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"zavodil.poolv1.near","voting_power":"20000000000000000000000000"},{"votable_address":"metastaking.app","votable_object_id":"08investinwomen_runbybisontrails.poolv1.near","voting_power":"248050000000000000000000000"}]},{"voter_id":"near-africa.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"1000000000","locking_period":300,"voting_power":"5000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"5000000000000000000000000000","vote_positions":[]},{"voter_id":"juniorfigueiredo.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"8000000","locking_period":30,"voting_power":"4000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"138470000","locking_period":60,"voting_power":"138470000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"142470000000000000000000000"}]},{"voter_id":"oliver24.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"soundglove7665.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"147397820","locking_period":300,"voting_power":"736989100000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"716989100000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stardust.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"elliotbraem.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3071971400","locking_period":300,"voting_power":"15359857000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15359857000000000000000000000","vote_positions":[]},{"voter_id":"chemtrails.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"33798600","locking_period":300,"voting_power":"168993000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"shitzuapes.pool.near","voting_power":"168993000000000000000000000"}]},{"voter_id":"arely455.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"autostake.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"rennyoel.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"142470000","locking_period":300,"voting_power":"712350000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"692350000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"maximordm.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":90,"voting_power":"6000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true},{"index":1,"amount":"118000000","locking_period":210,"voting_power":"413000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"413000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"staking4all.poolv1.near","voting_power":"6000000000000000000000000"}]},{"voter_id":"fxws.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"336517704200","locking_period":300,"voting_power":"1682588521000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"oe.poolv1.near","voting_power":"1682588521000000000000000000000"}]},{"voter_id":"rafuch00.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":180,"voting_power":"12000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"stakecraft.poolv1.near","voting_power":"2000000000000000000000000"}]},{"voter_id":"2413761283c73caf2e62f375a0ac0cffc09725d354e3c5c75c5726f54f076a0b","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"20000000000000000000000000"}]},{"voter_id":"say_sarg.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"122680000","locking_period":300,"voting_power":"613400000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"613400000000000000000000000"}]},{"voter_id":"holobit.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4000000","locking_period":300,"voting_power":"20000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"10000000000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"allnodes.poolv1.near","voting_power":"10000000000000000000000000"}]},{"voter_id":"478f0f81f81824a1db9f1c434b73e2c800e2992069a2d0484d050a86406a4402","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"4865974730","locking_period":150,"voting_power":"12164936825000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"25000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"12164936800000000000000000000"}]},{"voter_id":"bagrera.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"20552177730","locking_period":300,"voting_power":"102760888650000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"50000000000000000000","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"luganodes.pool.near","voting_power":"102760888600000000000000000000"}]},{"voter_id":"233341a07296a79ed5bd7fe548012c1821ad4823277fc6a2a43bb49fa9ce6665","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"14585095940","locking_period":300,"voting_power":"72925479700000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"owa.poolv1.near","voting_power":"72925479700000000000000000000"}]},{"voter_id":"anarchychains.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3500000000","locking_period":120,"voting_power":"7000000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"colossus.poolv1.near","voting_power":"7000000000000000000000000000"}]},{"voter_id":"irambellum.near","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"3058000000","locking_period":300,"voting_power":"15290000000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"15290000000000000000000000000","vote_positions":[]},{"voter_id":"ec2c2274600d00c62371b688cc5b21c46155648b34b32aa3020d6e6c4e18d83d","balance_in_contract":"0","locking_positions":[{"index":0,"amount":"319464000","locking_period":300,"voting_power":"1597320000000000000000000000","unlocking_started_at":null,"is_unlocked":false,"is_unlocking":false,"is_locked":true}],"voting_power":"0","vote_positions":[{"votable_address":"metastaking.app","votable_object_id":"pandateam.poolv1.near","voting_power":"1597320000000000000000000000"}]}] \ No newline at end of file diff --git a/pots/migrations/0003_alter_potapplication_options_and_more.py b/pots/migrations/0003_alter_potapplication_options_and_more.py new file mode 100644 index 0000000..48bb30a --- /dev/null +++ b/pots/migrations/0003_alter_potapplication_options_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 5.0.4 on 2024-06-05 14:02 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0002_alter_potapplication_options_and_more"), + ] + + operations = [ + migrations.AlterModelOptions( + name="potapplication", + options={"verbose_name_plural": "Pot Applications"}, + ), + migrations.AlterModelOptions( + name="potapplicationreview", + options={"verbose_name_plural": "Pot Application Reviews"}, + ), + migrations.AlterModelOptions( + name="potfactory", + options={"verbose_name_plural": "Pot Factories"}, + ), + migrations.AlterModelOptions( + name="potpayoutchallenge", + options={"verbose_name_plural": "Payout Challenges"}, + ), + migrations.AlterModelOptions( + name="potpayoutchallengeadminresponse", + options={"verbose_name_plural": "Payout Challenge Responses"}, + ), + ] diff --git a/pots/migrations/0004_alter_potapplication_tx_hash_and_more.py b/pots/migrations/0004_alter_potapplication_tx_hash_and_more.py new file mode 100644 index 0000000..4cf6ca3 --- /dev/null +++ b/pots/migrations/0004_alter_potapplication_tx_hash_and_more.py @@ -0,0 +1,53 @@ +# Generated by Django 5.0.4 on 2024-06-13 15:31 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0003_alter_potapplication_options_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="potapplication", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + max_length=64, + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potapplicationreview", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + max_length=64, + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potpayout", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + max_length=64, + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potpayoutchallengeadminresponse", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + max_length=64, + null=True, + verbose_name="transaction hash", + ), + ), + ] diff --git a/pots/migrations/0005_alter_potapplication_updated_at.py b/pots/migrations/0005_alter_potapplication_updated_at.py new file mode 100644 index 0000000..5d91e47 --- /dev/null +++ b/pots/migrations/0005_alter_potapplication_updated_at.py @@ -0,0 +1,22 @@ +# Generated by Django 5.0.4 on 2024-06-13 15:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0004_alter_potapplication_tx_hash_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="potapplication", + name="updated_at", + field=models.DateTimeField( + help_text="Application last update date.", + null=True, + verbose_name="updated at", + ), + ), + ] diff --git a/pots/migrations/0006_alter_pot_custom_sybil_checks_and_more.py b/pots/migrations/0006_alter_pot_custom_sybil_checks_and_more.py new file mode 100644 index 0000000..be07aad --- /dev/null +++ b/pots/migrations/0006_alter_pot_custom_sybil_checks_and_more.py @@ -0,0 +1,120 @@ +# Generated by Django 5.0.4 on 2024-06-14 17:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0005_alter_potapplication_updated_at"), + ] + + operations = [ + migrations.AlterField( + model_name="pot", + name="custom_sybil_checks", + field=models.CharField( + help_text="Custom sybil checks.", + null=True, + verbose_name="custom sybil checks", + ), + ), + migrations.AlterField( + model_name="pot", + name="matching_pool_balance", + field=models.CharField( + help_text="Matching pool balance.", verbose_name="matching pool balance" + ), + ), + migrations.AlterField( + model_name="pot", + name="min_matching_pool_donation_amount", + field=models.CharField( + help_text="Min matching pool donation amount.", + verbose_name="min matching pool donation amount", + ), + ), + migrations.AlterField( + model_name="pot", + name="protocol_config_provider", + field=models.CharField( + help_text="Protocol config provider.", + null=True, + verbose_name="protocol config provider", + ), + ), + migrations.AlterField( + model_name="pot", + name="registry_provider", + field=models.CharField( + help_text="Registry provider.", + null=True, + verbose_name="registry provider", + ), + ), + migrations.AlterField( + model_name="pot", + name="sybil_wrapper_provider", + field=models.CharField( + help_text="Sybil wrapper provider.", + null=True, + verbose_name="sybil wrapper provider", + ), + ), + migrations.AlterField( + model_name="pot", + name="total_matching_pool", + field=models.CharField( + help_text="Total matching pool.", verbose_name="total matching pool" + ), + ), + migrations.AlterField( + model_name="pot", + name="total_public_donations", + field=models.CharField( + help_text="Total public donations.", + verbose_name="total public donations", + ), + ), + migrations.AlterField( + model_name="potapplication", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potapplicationreview", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potpayout", + name="amount", + field=models.CharField(help_text="Payout amount.", verbose_name="amount"), + ), + migrations.AlterField( + model_name="potpayout", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potpayoutchallengeadminresponse", + name="tx_hash", + field=models.CharField( + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + ] diff --git a/pots/migrations/0007_potpayout_token.py b/pots/migrations/0007_potpayout_token.py new file mode 100644 index 0000000..c34c813 --- /dev/null +++ b/pots/migrations/0007_potpayout_token.py @@ -0,0 +1,26 @@ +# Generated by Django 5.0.4 on 2024-06-20 14:10 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0006_alter_pot_custom_sybil_checks_and_more"), + ("tokens", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="potpayout", + name="token", + field=models.ForeignKey( + help_text="Payout token.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="pot_payouts", + to="tokens.token", + ), + ), + ] diff --git a/pots/migrations/0008_migrate_ft_to_token.py b/pots/migrations/0008_migrate_ft_to_token.py new file mode 100644 index 0000000..b04b159 --- /dev/null +++ b/pots/migrations/0008_migrate_ft_to_token.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.4 on 2024-06-20 13:04 + +from django.db import migrations + + +def migrate_ft_to_token(apps, schema_editor): + PotPayout = apps.get_model("pots", "PotPayout") + Token = apps.get_model("tokens", "Token") + for payout in PotPayout.objects.all(): + token = Token.objects.get(id=payout.ft) + payout.token = token + payout.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0007_potpayout_token"), + ] + + operations = [ + migrations.RunPython(migrate_ft_to_token), + ] diff --git a/pots/migrations/0009_remove_potpayout_ft_alter_potpayout_token.py b/pots/migrations/0009_remove_potpayout_ft_alter_potpayout_token.py new file mode 100644 index 0000000..ef926c4 --- /dev/null +++ b/pots/migrations/0009_remove_potpayout_ft_alter_potpayout_token.py @@ -0,0 +1,29 @@ +# Generated by Django 5.0.4 on 2024-06-20 14:14 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0008_migrate_ft_to_token"), + ("tokens", "0001_initial"), + ] + + operations = [ + migrations.RemoveField( + model_name="potpayout", + name="ft", + ), + migrations.AlterField( + model_name="potpayout", + name="token", + field=models.ForeignKey( + help_text="Payout token.", + on_delete=django.db.models.deletion.CASCADE, + related_name="pot_payouts", + to="tokens.token", + ), + ), + ] diff --git a/pots/migrations/0010_alter_potpayout_paid_at.py b/pots/migrations/0010_alter_potpayout_paid_at.py new file mode 100644 index 0000000..97c6304 --- /dev/null +++ b/pots/migrations/0010_alter_potpayout_paid_at.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.4 on 2024-07-08 13:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0009_remove_potpayout_ft_alter_potpayout_token"), + ] + + operations = [ + migrations.AlterField( + model_name="potpayout", + name="paid_at", + field=models.DateTimeField( + db_index=True, + help_text="Payout date.", + null=True, + verbose_name="paid at", + ), + ), + ] diff --git a/pots/migrations/0011_rename_id_pot_account_rename_id_potfactory_account.py b/pots/migrations/0011_rename_id_pot_account_rename_id_potfactory_account.py new file mode 100644 index 0000000..7ac40e8 --- /dev/null +++ b/pots/migrations/0011_rename_id_pot_account_rename_id_potfactory_account.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.6 on 2024-07-19 22:52 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0010_alter_potpayout_paid_at"), + ] + + operations = [ + migrations.RenameField( + model_name="pot", + old_name="id", + new_name="account", + ), + migrations.RenameField( + model_name="potfactory", + old_name="id", + new_name="account", + ), + ] diff --git a/pots/migrations/0012_alter_pot_base_currency_alter_pot_chef_and_more.py b/pots/migrations/0012_alter_pot_base_currency_alter_pot_chef_and_more.py new file mode 100644 index 0000000..ab2e610 --- /dev/null +++ b/pots/migrations/0012_alter_pot_base_currency_alter_pot_chef_and_more.py @@ -0,0 +1,261 @@ +# Generated by Django 5.0.6 on 2024-07-25 17:16 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0006_alter_account_near_social_profile_data"), + ("pots", "0011_rename_id_pot_account_rename_id_potfactory_account"), + ] + + operations = [ + migrations.AlterField( + model_name="pot", + name="base_currency", + field=models.CharField( + blank=True, + help_text="Base currency.", + max_length=64, + null=True, + verbose_name="base currency", + ), + ), + migrations.AlterField( + model_name="pot", + name="chef", + field=models.ForeignKey( + blank=True, + help_text="Pot chef.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="chef_pots", + to="accounts.account", + ), + ), + migrations.AlterField( + model_name="pot", + name="cooldown_end", + field=models.DateTimeField( + blank=True, + help_text="Pot cooldown end date.", + null=True, + verbose_name="cooldown end", + ), + ), + migrations.AlterField( + model_name="pot", + name="cooldown_period_ms", + field=models.PositiveIntegerField( + blank=True, + help_text="Pot cooldown period in ms.", + null=True, + verbose_name="cooldown period in ms", + ), + ), + migrations.AlterField( + model_name="pot", + name="custom_min_threshold_score", + field=models.PositiveIntegerField( + blank=True, + help_text="Custom min threshold score.", + null=True, + verbose_name="custom min threshold score", + ), + ), + migrations.AlterField( + model_name="pot", + name="custom_sybil_checks", + field=models.CharField( + blank=True, + help_text="Custom sybil checks.", + null=True, + verbose_name="custom sybil checks", + ), + ), + migrations.AlterField( + model_name="pot", + name="protocol_config_provider", + field=models.CharField( + blank=True, + help_text="Protocol config provider.", + null=True, + verbose_name="protocol config provider", + ), + ), + migrations.AlterField( + model_name="pot", + name="registry_provider", + field=models.CharField( + blank=True, + help_text="Registry provider.", + null=True, + verbose_name="registry provider", + ), + ), + migrations.AlterField( + model_name="pot", + name="sybil_wrapper_provider", + field=models.CharField( + blank=True, + help_text="Sybil wrapper provider.", + null=True, + verbose_name="sybil wrapper provider", + ), + ), + migrations.AlterField( + model_name="pot", + name="total_matching_pool_usd", + field=models.DecimalField( + blank=True, + decimal_places=2, + help_text="Total matching pool in USD.", + max_digits=20, + null=True, + verbose_name="total matching pool in USD", + ), + ), + migrations.AlterField( + model_name="pot", + name="total_public_donations_usd", + field=models.DecimalField( + blank=True, + decimal_places=2, + help_text="Total public donations in USD.", + max_digits=20, + null=True, + verbose_name="total public donations in USD", + ), + ), + migrations.AlterField( + model_name="potapplication", + name="message", + field=models.TextField( + blank=True, + help_text="Application message.", + max_length=1024, + null=True, + verbose_name="message", + ), + ), + migrations.AlterField( + model_name="potapplication", + name="tx_hash", + field=models.CharField( + blank=True, + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potapplication", + name="updated_at", + field=models.DateTimeField( + blank=True, + help_text="Application last update date.", + null=True, + verbose_name="updated at", + ), + ), + migrations.AlterField( + model_name="potapplicationreview", + name="notes", + field=models.TextField( + blank=True, + help_text="Review notes.", + max_length=1024, + null=True, + verbose_name="notes", + ), + ), + migrations.AlterField( + model_name="potapplicationreview", + name="tx_hash", + field=models.CharField( + blank=True, + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potfactory", + name="source_metadata", + field=models.JSONField( + blank=True, + help_text="Pot factory source metadata.", + null=True, + verbose_name="source metadata", + ), + ), + migrations.AlterField( + model_name="potpayout", + name="amount_paid_usd", + field=models.DecimalField( + blank=True, + decimal_places=2, + help_text="Payout amount in USD.", + max_digits=20, + null=True, + verbose_name="amount paid in USD", + ), + ), + migrations.AlterField( + model_name="potpayout", + name="paid_at", + field=models.DateTimeField( + blank=True, + db_index=True, + help_text="Payout date.", + null=True, + verbose_name="paid at", + ), + ), + migrations.AlterField( + model_name="potpayout", + name="tx_hash", + field=models.CharField( + blank=True, + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + migrations.AlterField( + model_name="potpayoutchallengeadminresponse", + name="challenger", + field=models.ForeignKey( + blank=True, + help_text="challenger being responded to.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="payout_admin_responses", + to="accounts.account", + ), + ), + migrations.AlterField( + model_name="potpayoutchallengeadminresponse", + name="pot", + field=models.ForeignKey( + blank=True, + help_text="Pot being challenged.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="payout_responses", + to="pots.pot", + ), + ), + migrations.AlterField( + model_name="potpayoutchallengeadminresponse", + name="tx_hash", + field=models.CharField( + blank=True, + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + ] diff --git a/pots/migrations/0013_potpayoutchallenge_tx_hash.py b/pots/migrations/0013_potpayoutchallenge_tx_hash.py new file mode 100644 index 0000000..e0d6b13 --- /dev/null +++ b/pots/migrations/0013_potpayoutchallenge_tx_hash.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.6 on 2024-07-29 21:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("pots", "0012_alter_pot_base_currency_alter_pot_chef_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="potpayoutchallenge", + name="tx_hash", + field=models.CharField( + blank=True, + help_text="Transaction hash.", + null=True, + verbose_name="transaction hash", + ), + ), + ] diff --git a/pots/migrations/0014_alter_potapplication_unique_together_and_more.py b/pots/migrations/0014_alter_potapplication_unique_together_and_more.py new file mode 100644 index 0000000..1ad3e5f --- /dev/null +++ b/pots/migrations/0014_alter_potapplication_unique_together_and_more.py @@ -0,0 +1,109 @@ +# Generated by Django 5.0.6 on 2024-09-18 23:05 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0006_alter_account_near_social_profile_data"), + ("grantpicks", "0001_initial"), + ("pots", "0013_potpayoutchallenge_tx_hash"), + ] + + operations = [ + migrations.AlterUniqueTogether( + name="potapplication", + unique_together=set(), + ), + migrations.AddField( + model_name="potapplication", + name="project", + field=models.ForeignKey( + blank=True, + help_text="Project that applied.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="applications", + to="grantpicks.project", + ), + ), + migrations.AddField( + model_name="potapplication", + name="round", + field=models.ForeignKey( + blank=True, + help_text="Round applied to.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="applications", + to="grantpicks.round", + ), + ), + migrations.AlterField( + model_name="potapplication", + name="applicant", + field=models.ForeignKey( + help_text="Account that applied to the pot or round.", + on_delete=django.db.models.deletion.CASCADE, + related_name="pot_applications", + to="accounts.account", + ), + ), + migrations.AlterField( + model_name="potapplication", + name="pot", + field=models.ForeignKey( + blank=True, + help_text="Pot applied to.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="applications", + to="pots.pot", + ), + ), + migrations.AlterField( + model_name="potapplication", + name="status", + field=models.CharField( + choices=[ + ("Pending", "Pending"), + ("Approved", "Approved"), + ("Rejected", "Rejected"), + ("InReview", "InReview"), + ("Blacklisted", "Blacklisted"), + ], + help_text="Application status.", + max_length=32, + verbose_name="status", + ), + ), + migrations.AlterField( + model_name="potapplicationreview", + name="status", + field=models.CharField( + choices=[ + ("Pending", "Pending"), + ("Approved", "Approved"), + ("Rejected", "Rejected"), + ("InReview", "InReview"), + ("Blacklisted", "Blacklisted"), + ], + help_text="Application status for this review.", + max_length=32, + verbose_name="status", + ), + ), + migrations.AddConstraint( + model_name="potapplication", + constraint=models.CheckConstraint( + check=models.Q( + models.Q(("pot__isnull", False), ("round__isnull", True)), + models.Q(("pot__isnull", True), ("round__isnull", False)), + _connector="OR", + ), + name="pot_or_round", + ), + ), + ] diff --git a/pots/migrations/0015_alter_potpayout_options_and_more.py b/pots/migrations/0015_alter_potpayout_options_and_more.py new file mode 100644 index 0000000..6bb3546 --- /dev/null +++ b/pots/migrations/0015_alter_potpayout_options_and_more.py @@ -0,0 +1,133 @@ +# Generated by Django 5.0.6 on 2024-09-26 00:10 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0006_alter_account_near_social_profile_data"), + ("grantpicks", "0001_initial"), + ("pots", "0014_alter_potapplication_unique_together_and_more"), + ("tokens", "0006_rename_id_token_account"), + ] + + operations = [ + migrations.AlterModelOptions( + name="potpayout", + options={"verbose_name_plural": "Pot Payouts"}, + ), + migrations.AlterUniqueTogether( + name="potpayoutchallenge", + unique_together=set(), + ), + migrations.AddField( + model_name="potpayout", + name="memo", + field=models.CharField( + blank=True, + help_text="Round payout memo", + null=True, + verbose_name="payout memo", + ), + ), + migrations.AddField( + model_name="potpayout", + name="on_chain_id", + field=models.IntegerField( + blank=True, + db_index=True, + help_text="Payout id in contract", + null=True, + unique=True, + verbose_name="contract payout id", + ), + ), + migrations.AddField( + model_name="potpayout", + name="round", + field=models.ForeignKey( + blank=True, + help_text="Round that this payout is for.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="payouts", + to="grantpicks.round", + ), + ), + migrations.AddField( + model_name="potpayoutchallenge", + name="round", + field=models.ForeignKey( + blank=True, + help_text="Round that this payout challenge is for.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="payouts_challenges", + to="grantpicks.round", + ), + ), + migrations.AddField( + model_name="potpayoutchallengeadminresponse", + name="round", + field=models.ForeignKey( + blank=True, + help_text="Round that this payout challenge response is for.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="payouts_challenge_responses", + to="grantpicks.round", + ), + ), + migrations.AlterField( + model_name="potpayout", + name="pot", + field=models.ForeignKey( + help_text="Pot that this payout is for.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="payouts", + to="pots.pot", + ), + ), + migrations.AlterField( + model_name="potpayoutchallenge", + name="pot", + field=models.ForeignKey( + help_text="Pot challenged.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="challenges", + to="pots.pot", + ), + ), + migrations.AddConstraint( + model_name="potpayout", + constraint=models.CheckConstraint( + check=models.Q( + models.Q(("pot__isnull", False), ("round__isnull", True)), + models.Q(("pot__isnull", True), ("round__isnull", False)), + _connector="OR", + ), + name="payout_pot_or_round", + ), + ), + migrations.AddConstraint( + model_name="potpayoutchallenge", + constraint=models.UniqueConstraint( + fields=("challenger", "pot"), name="unique_challenger_pot" + ), + ), + migrations.AddConstraint( + model_name="potpayoutchallenge", + constraint=models.CheckConstraint( + check=models.Q( + models.Q(("pot__isnull", False), ("round__isnull", True)), + models.Q(("pot__isnull", True), ("round__isnull", False)), + _connector="OR", + ), + name="payout_challenge_pot_or_round", + ), + ), + ] diff --git a/pots/migrations/0016_alter_potapplication_project.py b/pots/migrations/0016_alter_potapplication_project.py new file mode 100644 index 0000000..fad9ce7 --- /dev/null +++ b/pots/migrations/0016_alter_potapplication_project.py @@ -0,0 +1,27 @@ +# Generated by Django 5.0.6 on 2024-11-04 09:56 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("accounts", "0006_alter_account_near_social_profile_data"), + ("pots", "0015_alter_potpayout_options_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="potapplication", + name="project", + field=models.ForeignKey( + blank=True, + help_text="Project that applied.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="applications", + to="accounts.account", + ), + ), + ] diff --git a/pots/models.py b/pots/models.py index a495aea..2c177be 100644 --- a/pots/models.py +++ b/pots/models.py @@ -1,11 +1,20 @@ +from datetime import datetime, timedelta +from decimal import Decimal + +import requests +from django.conf import settings from django.db import models from django.utils.translation import gettext_lazy as _ +from django.core.exceptions import ValidationError from accounts.models import Account +from base.logging import logger +from base.utils import format_date +from tokens.models import Token class PotFactory(models.Model): - id = models.OneToOneField( + account = models.OneToOneField( Account, primary_key=True, related_name="pot_factory", @@ -37,6 +46,7 @@ class PotFactory(models.Model): source_metadata = models.JSONField( _("source metadata"), null=True, + blank=True, help_text=_("Pot factory source metadata."), ) protocol_fee_basis_points = models.PositiveIntegerField( @@ -60,9 +70,44 @@ class PotFactory(models.Model): class Meta: verbose_name_plural = "Pot Factories" + def update_configs(self): + try: + + url = ( + f"{settings.FASTNEAR_RPC_URL}/account/{self.account.id}/view/get_config" + ) + response = requests.get(url) + if response.status_code != 200: + logger.error( + f"Failed to get config for pot {self.account}: {response.text}" + ) + else: + config = response.json() + print(config) + self.protocol_fee_basis_points = config.get("protocol_fee_basis_points") + acct, created = Account.objects.get_or_create(defaults={"chain_id":1}, + id=config.get("protocol_fee_recipient_account") + ) + self.protocol_fee_recipient = acct + self.require_whitelist = config.get("require_whitelist") + self.owner, created = Account.objects.get_or_create(defaults={"chain_id":1}, + id=config.get("owner") + ) + self.admins.clear() + for admin_id in config.get("admins"): + self.admins.add(Account.objects.get_or_create(defaults={"chain_id":1},id=admin_id)[0]) + self.whitelisted_deployers.clear() + for deployer_id in config.get("whitelisted_deployers"): + self.whitelisted_deployers.add( + Account.objects.get_or_create(defaults={"chain_id":1},id=deployer_id)[0] + ) + self.save() + except Exception as e: + logger.error(f"Failed to update factory config, Error: {e}") + class Pot(models.Model): - id = models.OneToOneField( + account = models.OneToOneField( Account, primary_key=True, related_name="pot", @@ -112,6 +157,7 @@ class Pot(models.Model): on_delete=models.CASCADE, related_name="chef_pots", null=True, + blank=True, help_text=_("Pot chef."), ) name = models.TextField( @@ -133,6 +179,7 @@ class Pot(models.Model): _("base currency"), max_length=64, null=True, + blank=True, help_text=_("Base currency."), ) application_start = models.DateTimeField( @@ -157,31 +204,31 @@ class Pot(models.Model): ) registry_provider = models.CharField( _("registry provider"), - max_length=64, null=True, + blank=True, help_text=_("Registry provider."), ) min_matching_pool_donation_amount = models.CharField( _("min matching pool donation amount"), - max_length=64, null=False, help_text=_("Min matching pool donation amount."), ) sybil_wrapper_provider = models.CharField( _("sybil wrapper provider"), - max_length=64, null=True, + blank=True, help_text=_("Sybil wrapper provider."), ) custom_sybil_checks = models.CharField( _("custom sybil checks"), - max_length=64, null=True, + blank=True, help_text=_("Custom sybil checks."), ) custom_min_threshold_score = models.PositiveIntegerField( _("custom min threshold score"), null=True, + blank=True, help_text=_("Custom min threshold score."), ) referral_fee_matching_pool_basis_points = models.PositiveIntegerField( @@ -201,7 +248,6 @@ class Pot(models.Model): ) total_matching_pool = models.CharField( _("total matching pool"), - max_length=64, null=False, help_text=_("Total matching pool."), ) @@ -210,11 +256,11 @@ class Pot(models.Model): max_digits=20, decimal_places=2, null=True, + blank=True, help_text=_("Total matching pool in USD."), ) matching_pool_balance = models.CharField( _("matching pool balance"), - max_length=64, null=False, help_text=_("Matching pool balance."), ) @@ -225,7 +271,6 @@ class Pot(models.Model): ) total_public_donations = models.CharField( _("total public donations"), - max_length=64, null=False, help_text=_("Total public donations."), ) @@ -234,6 +279,7 @@ class Pot(models.Model): max_digits=20, decimal_places=2, null=True, + blank=True, help_text=_("Total public donations in USD."), ) public_donations_count = models.PositiveIntegerField( @@ -244,11 +290,13 @@ class Pot(models.Model): cooldown_end = models.DateTimeField( _("cooldown end"), null=True, + blank=True, help_text=_("Pot cooldown end date."), ) cooldown_period_ms = models.PositiveIntegerField( _("cooldown period in ms"), null=True, + blank=True, help_text=_("Pot cooldown period in ms."), ) all_paid_out = models.BooleanField( @@ -258,8 +306,8 @@ class Pot(models.Model): ) protocol_config_provider = models.CharField( _("protocol config provider"), - max_length=64, null=True, + blank=True, help_text=_("Protocol config provider."), ) @@ -275,12 +323,79 @@ class Meta: ), ] + def update_configs(self): + try: + url = ( + f"{settings.FASTNEAR_RPC_URL}/account/{self.account.id}/view/get_config" + ) + response = requests.get(url) + if response.status_code != 200: + logger.error( + f"Failed to get config for pot {self.account}: {response.text}" + ) + else: + config = response.json() + print(config) + self.owner, created = Account.objects.get_or_create(defaults={"chain_id":1}, + id=config.get("owner") + ) + self.admins.clear() + for admin_id in config.get("admins", []): + self.admins.add(Account.objects.get_or_create(defaults={"chain_id":1},id=admin_id)[0]) + if config.get("chef"): + self.chef, created = Account.objects.get_or_create(defaults={"chain_id":1}, + id=config.get("chef") + ) + self.name = config.get("pot_name") + self.description = config.get("pot_description") + self.max_approved_applicants = config.get("max_projects") + self.base_currency = config.get("base_currency") + self.application_start = datetime.fromtimestamp( + config.get("application_start_ms") / 1000 + ) + self.application_end = datetime.fromtimestamp( + config.get("application_end_ms") / 1000 + ) + self.matching_round_start = datetime.fromtimestamp( + config.get("public_round_start_ms") / 1000 + ) + self.matching_round_end = datetime.fromtimestamp( + config.get("public_round_end_ms") / 1000 + ) + self.registry_provider = config.get("registry_provider") + self.min_matching_pool_donation_amount = config.get( + "min_matching_pool_donation_amount" + ) + self.sybil_wrapper_provider = config.get("sybil_wrapper_provider") + self.custom_sybil_checks = config.get("custom_sybil_checks") + self.custom_min_threshold_score = config.get( + "custom_min_threshold_score" + ) + self.referral_fee_matching_pool_basis_points = config.get( + "referral_fee_matching_pool_basis_points" + ) + self.referral_fee_public_round_basis_points = config.get( + "referral_fee_public_round_basis_points" + ) + self.chef_fee_basis_points = config.get("chef_fee_basis_points") + if config.get("cooldown_end_ms"): + self.cooldown_end = datetime.fromtimestamp( + config.get("cooldown_end_ms") / 1000 + ) + self.all_paid_out = config.get("all_paid_out") + self.protocol_config_provider = config.get("protocol_config_provider") + self.save() + except Exception as e: + logger.error(f"Failed to update pot config, Error: {e}") + class PotApplicationStatus(models.TextChoices): PENDING = "Pending", "Pending" APPROVED = "Approved", "Approved" REJECTED = "Rejected", "Rejected" INREVIEW = "InReview", "InReview" + BLACKLISTED = "Blacklisted", "Blacklisted" + class PotApplication(models.Model): @@ -293,22 +408,41 @@ class PotApplication(models.Model): Pot, on_delete=models.CASCADE, related_name="applications", - null=False, + null=True, + blank=True, help_text=_("Pot applied to."), db_index=True, ) + round = models.ForeignKey( + "grantpicks.Round", + on_delete=models.CASCADE, + related_name="applications", + null=True, + blank=True, + help_text=_("Round applied to."), + db_index=True, + ) + project = models.ForeignKey( + Account, + on_delete=models.CASCADE, + related_name="applications", + null=True, + blank=True, + help_text=_("Project that applied."), + ) applicant = models.ForeignKey( Account, on_delete=models.CASCADE, related_name="pot_applications", null=False, - help_text=_("Account that applied to the pot."), + help_text=_("Account that applied to the pot or round."), db_index=True, ) message = models.TextField( _("message"), max_length=1024, null=True, + blank=True, help_text=_("Application message."), ) status = models.CharField( @@ -326,19 +460,43 @@ class PotApplication(models.Model): ) updated_at = models.DateTimeField( _("updated at"), + null=True, + blank=True, help_text=_("Application last update date."), ) tx_hash = models.CharField( _("transaction hash"), - max_length=64, - null=False, + null=True, + blank=True, help_text=_("Transaction hash."), ) class Meta: verbose_name_plural = "Pot Applications" + constraints = [ + models.CheckConstraint( + check=( + models.Q(pot__isnull=False) & models.Q(round__isnull=True) | + models.Q(pot__isnull=True) & models.Q(round__isnull=False) + ), + name="pot_or_round" + ) + ] + + def clean(self): + if self.pot is None and self.round is None: + raise ValidationError(_("Either pot or round must be specified.")) + if self.pot is not None and self.round is not None: + raise ValidationError(_("Only one of pot or round can be specified.")) - unique_together = (("pot", "applicant"),) + def save(self, *args, **kwargs): + self.clean() + super().save(*args, **kwargs) + + def __str__(self): + if self.pot: + return f"{self.applicant.id} - {self.pot}" + return f"{self.applicant.id} - {self.round}" class PotApplicationReview(models.Model): @@ -365,6 +523,7 @@ class PotApplicationReview(models.Model): _("notes"), max_length=1024, null=True, + blank=True, help_text=_("Review notes."), ) status = models.CharField( @@ -381,8 +540,8 @@ class PotApplicationReview(models.Model): ) tx_hash = models.CharField( _("transaction hash"), - max_length=64, - null=False, + null=True, + blank=True, help_text=_("Transaction hash."), ) @@ -398,14 +557,37 @@ class PotPayout(models.Model): primary_key=True, help_text=_("Payout id."), ) + on_chain_id =models.IntegerField( + _("contract payout id"), + null=True, + blank=True, + unique=True, + help_text=_("Payout id in contract"), + db_index=True + ) pot = models.ForeignKey( Pot, on_delete=models.CASCADE, related_name="payouts", - null=False, + null=True, help_text=_("Pot that this payout is for."), db_index=True, ) + round = models.ForeignKey( + "grantpicks.Round", + on_delete=models.CASCADE, + related_name="payouts", + null=True, + blank=True, + help_text=_("Round that this payout is for."), + db_index=True, + ) + memo = models.CharField( + _("payout memo"), + null=True, + blank=True, + help_text=_("Round payout memo"), + ) recipient = models.ForeignKey( Account, on_delete=models.CASCADE, @@ -416,7 +598,6 @@ class PotPayout(models.Model): ) amount = models.CharField( _("amount"), - max_length=64, null=False, help_text=_("Payout amount."), ) @@ -425,29 +606,71 @@ class PotPayout(models.Model): max_digits=20, decimal_places=2, null=True, + blank=True, help_text=_("Payout amount in USD."), ) - ft = models.ForeignKey( - Account, + token = models.ForeignKey( + Token, on_delete=models.CASCADE, - related_name="ft_pot_payouts", + related_name="pot_payouts", null=False, - help_text=_("Payout FT."), - db_index=True, + help_text=_("Payout token."), ) paid_at = models.DateTimeField( _("paid at"), - null=False, + null=True, + blank=True, help_text=_("Payout date."), db_index=True, ) tx_hash = models.CharField( _("transaction hash"), - max_length=64, - null=False, + null=True, + blank=True, help_text=_("Transaction hash."), ) + class Meta: + verbose_name_plural = "Pot Payouts" + constraints = [ + models.CheckConstraint( + check=( + models.Q(pot__isnull=False) & models.Q(round__isnull=True) | + models.Q(pot__isnull=True) & models.Q(round__isnull=False) + ), + name="payout_pot_or_round" + ) + ] + + def clean(self): + if self.pot is None and self.round is None: + raise ValidationError(_("Either pot or round must be specified.")) + if self.pot is not None and self.round is not None: + raise ValidationError(_("Only one of pot or round can be specified.")) + + def save(self, *args, **kwargs): + self.clean() + super().save(*args, **kwargs) + + ### Fetches USD prices for the Donation record and saves USD totals + def fetch_usd_prices(self): + # first, see if there is a TokenHistoricalPrice within 1 day (or HISTORICAL_PRICE_QUERY_HOURS) of self.paid_at + try: + token = self.token + price_usd = token.fetch_usd_prices_common(self.paid_at) + if not price_usd: + logger.info( + f"No USD price found for token {self.token.symbol} at {self.paid_at}" + ) + return + self.amount_paid_usd = token.format_price(self.amount) * price_usd + self.save() + logger.info( + f"Saved USD prices for pot payout for pot id: {self.pot.account if self.pot else self.round}" + ) + except Exception as e: + logger.error(f"Failed to calculate and save USD prices: {e}") + class PotPayoutChallenge(models.Model): id = models.AutoField( @@ -466,9 +689,18 @@ class PotPayoutChallenge(models.Model): Pot, on_delete=models.CASCADE, related_name="challenges", - null=False, + null=True, help_text=_("Pot challenged."), ) + round = models.ForeignKey( + "grantpicks.Round", + on_delete=models.CASCADE, + related_name="payouts_challenges", + null=True, + blank=True, + help_text=_("Round that this payout challenge is for."), + db_index=True, + ) created_at = models.DateTimeField( _("created at"), null=False, @@ -480,11 +712,29 @@ class PotPayoutChallenge(models.Model): null=False, help_text=_("Challenge message."), ) + tx_hash = models.CharField( + _("transaction hash"), + null=True, + blank=True, + help_text=_("Transaction hash."), + ) class Meta: verbose_name_plural = "Payout Challenges" - unique_together = (("challenger", "pot"),) + constraints = [ + models.UniqueConstraint( + fields=['challenger', 'pot'], + name='unique_challenger_pot' + ), + models.CheckConstraint( + check=( + models.Q(pot__isnull=False) & models.Q(round__isnull=True) | + models.Q(pot__isnull=True) & models.Q(round__isnull=False) + ), + name="payout_challenge_pot_or_round" + ) + ] class PotPayoutChallengeAdminResponse(models.Model): @@ -498,6 +748,7 @@ class PotPayoutChallengeAdminResponse(models.Model): on_delete=models.CASCADE, related_name="payout_admin_responses", null=True, + blank=True, help_text=_("challenger being responded to."), ) @@ -506,9 +757,20 @@ class PotPayoutChallengeAdminResponse(models.Model): on_delete=models.CASCADE, related_name="payout_responses", null=True, + blank=True, help_text=_("Pot being challenged."), ) + round = models.ForeignKey( + "grantpicks.Round", + on_delete=models.CASCADE, + related_name="payouts_challenge_responses", + null=True, + blank=True, + help_text=_("Round that this payout challenge response is for."), + db_index=True, + ) + admin = models.ForeignKey( Account, on_delete=models.CASCADE, @@ -534,8 +796,8 @@ class PotPayoutChallengeAdminResponse(models.Model): ) tx_hash = models.CharField( _("transaction hash"), - max_length=64, - null=False, + null=True, + blank=True, help_text=_("Transaction hash."), ) diff --git a/pots/serializers.py b/pots/serializers.py index 232fbd3..9a46c4c 100644 --- a/pots/serializers.py +++ b/pots/serializers.py @@ -1,22 +1,401 @@ -from rest_framework.serializers import ModelSerializer, SerializerMethodField +import requests +from rest_framework import serializers +from rest_framework.serializers import ModelSerializer -from .models import Pot, PotApplication, PotPayout +from django.conf import settings +from django.core.cache import cache + +from accounts.serializers import SIMPLE_ACCOUNT_EXAMPLE, AccountSerializer, NearSocialProfileDataSerializer +from base.serializers import TwoDecimalPlacesField +from tokens.serializers import SIMPLE_TOKEN_EXAMPLE, TokenSerializer + +from .models import Pot, PotApplication, PotFactory, PotPayout, PotApplicationReview class PotSerializer(ModelSerializer): + total_matching_pool_usd = TwoDecimalPlacesField(max_digits=20, decimal_places=2) + total_public_donations_usd = TwoDecimalPlacesField(max_digits=20, decimal_places=2) + class Meta: model = Pot - fields = "__all__" # TODO: potentially adjust this e.g. for formatting of datetimes, adding convenience fields etc + fields = [ + "account", + "pot_factory", + "deployer", + "deployed_at", + "source_metadata", + "owner", + "admins", + "chef", + "name", + "description", + "max_approved_applicants", + "base_currency", + "application_start", + "application_end", + "matching_round_start", + "matching_round_end", + "registry_provider", + "min_matching_pool_donation_amount", + "sybil_wrapper_provider", + "custom_sybil_checks", + "custom_min_threshold_score", + "referral_fee_matching_pool_basis_points", + "referral_fee_public_round_basis_points", + "chef_fee_basis_points", + "total_matching_pool", + "total_matching_pool_usd", + "matching_pool_balance", + "matching_pool_donations_count", + "total_public_donations", + "total_public_donations_usd", + "public_donations_count", + "cooldown_end", + "cooldown_period_ms", + "all_paid_out", + "protocol_config_provider", + ] + + deployer = AccountSerializer() + owner = AccountSerializer() + admins = AccountSerializer(many=True) + chef = AccountSerializer() + + +class PotFactorySerializer(ModelSerializer): + + class Meta: + model = PotFactory + fields = [ + "account", + "owner", + "admins", + "whitelisted_deployers", + "source_metadata", + "deployed_at", + "protocol_fee_basis_points", + "require_whitelist", + "protocol_fee_recipient", + ] + + owner = AccountSerializer() + protocol_fee_recipient = AccountSerializer() + admins = AccountSerializer(many=True) + whitelisted_deployers = AccountSerializer(many=True) + + +class ApplicationReviewSerializer(serializers.ModelSerializer): + reviewer = serializers.SerializerMethodField() + + class Meta: + model = PotApplicationReview + fields = [ + "reviewer", + "notes", + "status", + "reviewed_at", + "tx_hash" + ] + + def get_reviewer(self, obj): + return obj.reviewer.id class PotApplicationSerializer(ModelSerializer): + reviews = ApplicationReviewSerializer(many=True) + class Meta: model = PotApplication - fields = "__all__" # TODO: potentially adjust this e.g. for formatting of datetimes, adding convenience fields etc - # TODO: add reviews + fields = [ + "id", + "pot", + "applicant", + "message", + "status", + "submitted_at", + "updated_at", + "tx_hash", + "reviews", + ] + + pot = PotSerializer() + applicant = AccountSerializer() class PotPayoutSerializer(ModelSerializer): class Meta: model = PotPayout - fields = "__all__" # TODO: potentially adjust this e.g. for formatting of datetimes, adding convenience fields etc + fields = [ + "id", + "pot", + "recipient", + "amount", + "amount_paid_usd", + "token", + "paid_at", + "tx_hash", + ] + + pot = PotSerializer() + recipient = AccountSerializer() + token = TokenSerializer() + + +EXAMPLE_POT_ID = "some-pot.v1.potfactory.potlock.near" + +EXAMPLE_POT_FACTORY_ID = "v1.potfactory.potlock.near" + + +SIMPLE_POT_EXAMPLE = { + "account": "some-pot.v1.potfactory.potlock.near", + "deployed_at": "2024-02-16T17:45:03.600845Z", + "source_metadata": { + "link": "https://github.com/PotLock/core", + "version": "0.1.0", + "commit_hash": "2db43b1182eb97d34e1b67f21b44c7084b364358", + }, + "name": "My Pot Name", + "description": "To support impactful open source software projects.", + "max_approved_applicants": 50, + "base_currency": "near", + "application_start": "2024-04-08T04:00:00Z", + "application_end": "2024-04-22T03:59:00Z", + "matching_round_start": "2024-04-22T04:00:00Z", + "matching_round_end": "2024-05-06T03:59:00Z", + "registry_provider": "registry.potlock.near:is_registered", + "min_matching_pool_donation_amount": "0", + "sybil_wrapper_provider": "v1.nadabot.near:is_human", + "custom_sybil_checks": None, + "custom_min_threshold_score": None, + "referral_fee_matching_pool_basis_points": 500, + "referral_fee_public_round_basis_points": 500, + "chef_fee_basis_points": 500, + "total_matching_pool": "10000000000000000000", + "total_matching_pool_usd": "100.17", + "matching_pool_balance": "10000000000000000000", + "matching_pool_donations_count": 0, + "total_public_donations": "100000000000000000", + "total_public_donations_usd": "1.17", + "public_donations_count": 0, + "cooldown_end": None, + "cooldown_period_ms": None, + "all_paid_out": False, + "protocol_config_provider": "v1.potfactory.potlock.near:get_protocol_config", + "pot_factory": "v1.potfactory.potlock.near", + "deployer": SIMPLE_ACCOUNT_EXAMPLE, + "owner": SIMPLE_ACCOUNT_EXAMPLE, + "chef": SIMPLE_ACCOUNT_EXAMPLE, + "admins": [SIMPLE_ACCOUNT_EXAMPLE], +} + +PAGINATED_POT_EXAMPLE = { + "count": 1, + "next": None, + "previous": None, + "results": [SIMPLE_POT_EXAMPLE], +} + + +class PaginatedPotsResponseSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.CharField(allow_null=True) + previous = serializers.CharField(allow_null=True) + results = PotSerializer(many=True) + +SIMPLE_MPDAO_VOTER_INFO_EXAMPLE = { + "voter_id": "01f7f1d124232a78b2a2f8e8ac21219d1ecd131ab592c2d9cae505d3c3cd21b6", + "account_data": { + "id": "01f7f1d124232a78b2a2f8e8ac21219d1ecd131ab592c2d9cae505d3c3cd21b6", + "total_donations_in_usd": 0.0, + "total_donations_out_usd": 0.0, + "total_matching_pool_allocations_usd": 0.0, + "donors_count": 0, + "near_social_profile_data": { + "name": "Manny98" + } + }, + "voter_data": { + "voter_id": "01f7f1d124232a78b2a2f8e8ac21219d1ecd131ab592c2d9cae505d3c3cd21b6", + "balance_in_contract": None, + "voting_power": None, + "locking_positions": None, + "vote_positions": None, + "staking_token_balance": "0", + "staking_token_id": "meta-pool.near" + } +} + +PAGINATED_MPDAO_USER_EXAMPLE = { + "count": 30, + "next": "http://127.0.0.1:8000/api/v1/mpdao/voter-info?page=3&page_size=30", + "previous": None, + "results": [SIMPLE_MPDAO_VOTER_INFO_EXAMPLE], +} + +SIMPLE_POT_FACTORY_EXAMPLE = { + "account": "v1.potfactory.potlock.near", + "owner": SIMPLE_ACCOUNT_EXAMPLE, + "admins": [SIMPLE_ACCOUNT_EXAMPLE], + "whitelisted_deployers": [SIMPLE_ACCOUNT_EXAMPLE], + "source_metadata": { + "link": "https://github.com/PotLock/core", + "version": "1.0.0", + "commit_hash": "e6b108e9442920333b44eb1a4068b9b9ae551d79", + }, + "deployed_at": "2024-02-12T13:49:58.940854Z", + "protocol_fee_basis_points": 200, + "require_whitelist": False, + "protocol_fee_recipient": SIMPLE_ACCOUNT_EXAMPLE, +} + + +class PaginatedPotFactoriesResponseSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.CharField(allow_null=True) + previous = serializers.CharField(allow_null=True) + results = PotFactorySerializer(many=True) + + +PAGINATED_POT_FACTORY_EXAMPLE = { + "count": 1, + "next": None, + "previous": None, + "results": [SIMPLE_POT_FACTORY_EXAMPLE], +} + +POT_APPLICATION_REVIEW_EXAMPLE = { + "reviewer": SIMPLE_ACCOUNT_EXAMPLE, + "notes": "Looks good!", + "status": "Approved", + "reviewed_at": "2024-06-05T18:12:39.014Z", + "tx_hash": "EVMQsXorrrxPLHfK9UnbzFUy1SVYWvc8hwSGQZs4RbTk", +} + + +SIMPLE_POT_APPLICATION_EXAMPLE = { + "id": 2, + "message": "Hi, I'm a great project and I'd like to apply for this pot.", + "status": "Pending", + "submitted_at": "2024-06-05T18:06:45.519Z", + "updated_at": "2024-06-05T18:06:45.519Z", + "tx_hash": "EVMQsXorrrxPLHfK9UnbzFUy1SVYWvc8hwSGQZs4RbTk", + "pot": SIMPLE_POT_EXAMPLE, + "applicant": SIMPLE_ACCOUNT_EXAMPLE, + "reviews": [POT_APPLICATION_REVIEW_EXAMPLE], +} + +PAGINATED_POT_APPLICATION_EXAMPLE = { + "count": 1, + "next": None, + "previous": None, + "results": [SIMPLE_POT_APPLICATION_EXAMPLE], +} + + +class PaginatedPotApplicationsResponseSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.CharField(allow_null=True) + previous = serializers.CharField(allow_null=True) + results = PotApplicationSerializer(many=True) + + +SIMPLE_PAYOUT_EXAMPLE = { + "id": 4, + "amount": "1000000000000000000000000", + "amount_paid_usd": "1.27", + "paid_at": "2024-06-05T18:12:39.014Z", + "tx_hash": "EVMQsXorrrxPLHfK9UnbzFUy1SVYWvc8hwSGQZs4RbTk", + "pot": SIMPLE_POT_EXAMPLE, + "recipient": "someproject.near", + "token": SIMPLE_TOKEN_EXAMPLE, +} + +PAGINATED_PAYOUT_EXAMPLE = { + "count": 1, + "next": None, + "previous": None, + "results": [SIMPLE_PAYOUT_EXAMPLE], +} + + +class PaginatedPotPayoutsResponseSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.CharField(allow_null=True) + previous = serializers.CharField(allow_null=True) + results = PotPayoutSerializer(many=True) + + +class LockingPositionSerializer(serializers.Serializer): + index = serializers.IntegerField() + amount = serializers.CharField() + locking_period = serializers.IntegerField() + voting_power = serializers.CharField() + unlocking_started_at = serializers.CharField(allow_null=True) + is_unlocked = serializers.BooleanField() + is_unlocking = serializers.BooleanField() + is_locked = serializers.BooleanField() + + +class VotePositionSerializer(serializers.Serializer): + votable_address = serializers.CharField() + votable_object_id = serializers.CharField() + voting_power = serializers.CharField() + + +class MpdaoSnapshotSerializer(serializers.Serializer): + voter_id = serializers.CharField() + balance_in_contract = serializers.CharField(allow_null=True) + voting_power = serializers.CharField(allow_null=True) + locking_positions = LockingPositionSerializer(many=True, allow_null=True) + vote_positions = VotePositionSerializer(many=True, allow_null=True) + is_human = serializers.SerializerMethodField() + + staking_token_balance = serializers.SerializerMethodField() + + staking_token_id = serializers.SerializerMethodField() # mpdao is only available on mainnet, + + def get_is_human(self, obj) -> bool: + voter_id = obj.get('voter_id') + cache_key = f'{voter_id}_is_human' + cached_res = cache.get(cache_key) + + if cached_res is not None: + return cached_res + url = f"https://rpc.web4.near.page/account/v1.nadabot.near/view/is_human?account_id={voter_id}&near_block_height=137273829" + response = requests.get(url) + if response.status_code == 200: + is_human = response.json() + cache.set(cache_key, is_human, 8640000) + return is_human + return False + + def get_staking_token_balance(self, obj): + voter_id = obj.get('voter_id') + cache_key = f'{voter_id}_token_balance' + cached_res = cache.get(cache_key) + + if cached_res is not None: + return cached_res + url = f"https://rpc.web4.near.page/account/meta-pool.near/view/ft_balance_of?account_id={voter_id}&near_block_height=137273829" + response = requests.get(url) + if response.status_code == 200: + balance = response.json() + cache.set(cache_key, balance, 8640000) + return balance + return "0" + + def get_staking_token_id(self, obj): + return "meta-pool.near" + + +class MpdaoVoterItemSerializer(serializers.Serializer): + voter_id = serializers.CharField() + account_data = AccountSerializer(allow_null=True) + voter_data = MpdaoSnapshotSerializer() + +class PaginatedMpdaoUsersSerializer(serializers.Serializer): + count = serializers.IntegerField() + next = serializers.URLField(allow_null=True) + previous = serializers.URLField(allow_null=True) + results = MpdaoVoterItemSerializer(many=True) + diff --git a/pots/utils.py b/pots/utils.py index 0d98146..98f5ac5 100644 --- a/pots/utils.py +++ b/pots/utils.py @@ -3,19 +3,24 @@ from django.conf import settings BASE_PATTERN = ( - r"^potlock\.testnet$" + r"v\d+\.potfactory\.potlock\.testnet" if settings.ENVIRONMENT == "testnet" - else r"v\d+\.potfactory\.potlock\.near$" + else (r"potfactory\.staging\.potlock\.near" if settings.ENVIRONMENT == "dev" else r"v\d+\.potfactory\.potlock\.near") ) def match_pot_factory_pattern(receiver): - """Matches the base pot factory version pattern without a subaccount. NB: does not currently handle testnet factory.""" - pattern = f"^{BASE_PATTERN}" + """Matches the base pot factory version pattern without a subaccount.""" + pattern = f"^{BASE_PATTERN}$" return bool(re.match(pattern, receiver)) def match_pot_subaccount_pattern(receiver): - """Matches the pot factory version pattern with a subaccount. NB: does not currently handle testnet factory.""" - pattern = f"^[a-zA-Z0-9_]+\.{BASE_PATTERN}" + """Matches the pot factory version pattern with a subaccount.""" + pattern = f"^[a-zA-Z0-9_-]+\.{BASE_PATTERN}$" return bool(re.match(pattern, receiver)) + + +def is_relevant_account(account_id): + return re.search(settings.POTLOCK_PATTERN, account_id) is not None or \ + re.search(settings.NADABOT_PATTERN, account_id) is not None \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 1bb5530..e04d500 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ readme = "README.md" python = "^3.11" django = "^5.0.4" psycopg2-binary = "^2.9.9" -near-lake-framework = "^0.0.7" +near-lake-framework = "^0.1.3" celery = "^5.3.6" redis = { extras = ["hiredis"], version = "^5.0.3" } requests = "^2.31.0" @@ -17,9 +17,14 @@ djangorestframework = "^3.15.1" django-cachalot = "^2.6.2" django-redis = "^5.4.0" gunicorn = "^22.0.0" -sentry-sdk = {extras = ["django"], version = "^1.45.0"} +sentry-sdk = { extras = ["django"], version = "^1.45.0" } watchtower = "^3.1.0" django-cors-headers = "^4.3.1" +drf-spectacular = "^0.27.2" +django-extensions = "^3.2.3" +psutil = "^6.0.0" +stellar-sdk = "^11.0.0" +reclaim-python-sdk = "^0.2.1" [tool.poetry.group.dev.dependencies] black = "^24.3.0" diff --git a/scripts/after_install.sh b/scripts/after_install.sh index 152ad3a..da83b8f 100644 --- a/scripts/after_install.sh +++ b/scripts/after_install.sh @@ -50,18 +50,30 @@ poetry run python manage.py showmigrations >> "$LOG_FILE" 2>&1 # Logging full o PENDING_MIGRATIONS=$(poetry run python manage.py showmigrations | grep "\[ \]" | wc -l) # Count unapplied migrations if [ "$PENDING_MIGRATIONS" -gt 0 ]; then - echo "Migrations found; stopping services..." >> "$LOG_FILE" - sudo systemctl stop gunicorn celery-indexer-worker celery-beat-worker celery-beat + # echo "Migrations found; stopping services..." >> "$LOG_FILE" + # sudo systemctl stop gunicorn celery-indexer-worker celery-beat-worker celery-beat echo 'Applying migrations...' >> "$LOG_FILE" poetry run python manage.py migrate >> "$LOG_FILE" 2>&1 - echo 'Starting services...' >> "$LOG_FILE" - sudo systemctl start gunicorn celery-indexer-worker celery-beat-worker celery-beat + # echo 'Starting services...' >> "$LOG_FILE" + # sudo systemctl start gunicorn celery-indexer-worker celery-beat-worker celery-beat else - echo 'No migrations found. Running collectstatic and restarting services...' >> "$LOG_FILE" - poetry run python manage.py collectstatic --noinput >> "$LOG_FILE" 2>&1 - sudo systemctl restart gunicorn celery-indexer-worker celery-beat-worker celery-beat + echo 'No migrations found.' >> "$LOG_FILE" + # echo 'No migrations found. Running collectstatic and restarting services...' >> "$LOG_FILE" + # poetry run python manage.py collectstatic --noinput >> "$LOG_FILE" 2>&1 + # sudo systemctl restart gunicorn celery-indexer-worker celery-beat-worker celery-beat fi +# Collect static +echo 'Running collectstatic...' >> "$LOG_FILE" +poetry run python manage.py collectstatic --noinput >> "$LOG_FILE" 2>&1 + +# Gracefully reload Gunicorn to apply the changes without downtime +echo 'Reloading Gunicorn...' >> "$LOG_FILE" +sudo systemctl kill --signal=HUP gunicorn-prod + +echo 'Restarting services...' >> "$LOG_FILE" +sudo systemctl restart celery-indexer-worker-prod celery-beat-worker-prod celery-beat-prod + echo "$(date '+%Y-%m-%d %H:%M:%S') - after_install.sh completed" >> "$LOG_FILE" \ No newline at end of file diff --git a/scripts/after_install_dev.sh b/scripts/after_install_dev.sh index d9b54f1..8088819 100755 --- a/scripts/after_install_dev.sh +++ b/scripts/after_install_dev.sh @@ -34,6 +34,7 @@ source "/home/ec2-user/.cache/pypoetry/virtualenvs/django-indexer-Y-SQFfhb-py3.1 # Install dependencies using Poetry echo "$(date '+%Y-%m-%d %H:%M:%S') - Installing dependencies with Poetry" >> "$LOG_FILE" +poetry lock --no-update >> "$LOG_FILE" poetry install >> "$LOG_FILE" echo "$(date '+%Y-%m-%d %H:%M:%S') - Dependencies installed" >> "$LOG_FILE" @@ -50,18 +51,25 @@ poetry run python manage.py showmigrations >> "$LOG_FILE" 2>&1 # Logging full o PENDING_MIGRATIONS=$(poetry run python manage.py showmigrations | grep "\[ \]" | wc -l) # Count unapplied migrations if [ "$PENDING_MIGRATIONS" -gt 0 ]; then - echo "Migrations found; stopping services..." >> "$LOG_FILE" - sudo systemctl stop gunicorn-dev celery-indexer-worker-dev celery-beat-worker-dev celery-beat-dev + # COMMENTING OUT FOR NOW AS I BELIEVE STOPPING SERVICES CREATES UNNECESSARY DOWNTIME + # echo "Migrations found; stopping services..." >> "$LOG_FILE" + # sudo systemctl stop gunicorn-dev celery-indexer-worker-dev celery-beat-worker-dev celery-beat-dev echo 'Applying migrations...' >> "$LOG_FILE" poetry run python manage.py migrate >> "$LOG_FILE" 2>&1 - - echo 'Starting services...' >> "$LOG_FILE" - sudo systemctl start gunicorn-dev celery-indexer-worker-dev celery-beat-worker-dev celery-beat-dev else - echo 'No migrations found. Running collectstatic and restarting services...' >> "$LOG_FILE" - poetry run python manage.py collectstatic --noinput >> "$LOG_FILE" 2>&1 - sudo systemctl restart gunicorn-dev celery-indexer-worker-dev celery-beat-worker-dev celery-beat-dev + echo 'No migrations found.' >> "$LOG_FILE" fi +# Collect static +echo 'Running collectstatic...' >> "$LOG_FILE" +poetry run python manage.py collectstatic --noinput >> "$LOG_FILE" 2>&1 + +# Gracefully reload Gunicorn to apply the changes without downtime +echo 'Reloading Gunicorn...' >> "$LOG_FILE" +sudo systemctl kill --signal=HUP gunicorn-dev + +echo 'Restarting services...' >> "$LOG_FILE" +sudo systemctl restart celery-indexer-worker-dev celery-beat-worker-dev celery-beat-dev + echo "$(date '+%Y-%m-%d %H:%M:%S') - after_install_dev.sh completed" >> "$LOG_FILE" diff --git a/scripts/after_install_testnet.sh b/scripts/after_install_testnet.sh index 94c517b..628e056 100755 --- a/scripts/after_install_testnet.sh +++ b/scripts/after_install_testnet.sh @@ -34,6 +34,7 @@ source "/home/ec2-user/.cache/pypoetry/virtualenvs/django-indexer-AhfQkQzj-py3.1 # Install dependencies using Poetry echo "$(date '+%Y-%m-%d %H:%M:%S') - Installing dependencies with Poetry" >> "$LOG_FILE" +poetry lock --no-update >> "$LOG_FILE" poetry install >> "$LOG_FILE" echo "$(date '+%Y-%m-%d %H:%M:%S') - Dependencies installed" >> "$LOG_FILE" @@ -50,18 +51,25 @@ poetry run python manage.py showmigrations >> "$LOG_FILE" 2>&1 # Logging full o PENDING_MIGRATIONS=$(poetry run python manage.py showmigrations | grep "\[ \]" | wc -l) # Count unapplied migrations if [ "$PENDING_MIGRATIONS" -gt 0 ]; then - echo "Migrations found; stopping services..." >> "$LOG_FILE" - sudo systemctl stop gunicorn-testnet celery-indexer-worker-testnet celery-beat-worker-testnet celery-beat-testnet + # COMMENTING OUT FOR NOW AS I BELIEVE STOPPING SERVICES IS UNNECESSARY + # echo "Migrations found; stopping services..." >> "$LOG_FILE" + # sudo systemctl stop gunicorn-testnet celery-indexer-worker-testnet celery-beat-worker-testnet celery-beat-testnet echo 'Applying migrations...' >> "$LOG_FILE" poetry run python manage.py migrate >> "$LOG_FILE" 2>&1 - - echo 'Starting services...' >> "$LOG_FILE" - sudo systemctl start gunicorn-testnet celery-indexer-worker-testnet celery-beat-worker-testnet celery-beat-testnet else - echo 'No migrations found. Running collectstatic and restarting services...' >> "$LOG_FILE" - poetry run python manage.py collectstatic --noinput >> "$LOG_FILE" 2>&1 - sudo systemctl restart gunicorn-testnet celery-indexer-worker-testnet celery-beat-worker-testnet celery-beat-testnet + echo 'No migrations found.' >> "$LOG_FILE" fi +# Collect static +echo 'Running collectstatic...' >> "$LOG_FILE" +poetry run python manage.py collectstatic --noinput >> "$LOG_FILE" 2>&1 + +# Gracefully reload Gunicorn to apply the changes without downtime +echo 'Reloading Gunicorn...' >> "$LOG_FILE" +sudo systemctl kill --signal=HUP gunicorn-testnet + +echo 'Restarting services...' >> "$LOG_FILE" +sudo systemctl restart celery-indexer-worker-testnet celery-beat-worker-testnet celery-beat-testnet + echo "$(date '+%Y-%m-%d %H:%M:%S') - after_install_testnet.sh completed" >> "$LOG_FILE" diff --git a/tokens/admin.py b/tokens/admin.py index f783399..6caa086 100644 --- a/tokens/admin.py +++ b/tokens/admin.py @@ -5,8 +5,16 @@ @admin.register(Token) class TokenAdmin(admin.ModelAdmin): - list_display = ("id", "decimals", "get_most_recent_price") - search_fields = ("id",) + list_display = ( + "account", + "name", + "symbol", + "coingecko_id", + "icon", + "decimals", + "get_most_recent_price", + ) + search_fields = ("account",) def get_most_recent_price(self, obj): price = obj.get_most_recent_price() @@ -14,27 +22,27 @@ def get_most_recent_price(self, obj): get_most_recent_price.short_description = "Most Recent Price (USD)" - def has_add_permission(self, request): - return False + # def has_add_permission(self, request): + # return False - def has_change_permission(self, request, obj=None): - return False + # def has_change_permission(self, request, obj=None): + # return False - def has_delete_permission(self, request, obj=None): - return False + # def has_delete_permission(self, request, obj=None): + # return False @admin.register(TokenHistoricalPrice) class TokenHistoricalPriceAdmin(admin.ModelAdmin): list_display = ("token", "timestamp", "price_usd") - search_fields = ("token__id",) + search_fields = ("token__account",) list_filter = ("timestamp",) - def has_add_permission(self, request): - return False + # def has_add_permission(self, request): + # return False - def has_change_permission(self, request, obj=None): - return False + # def has_change_permission(self, request, obj=None): + # return False - def has_delete_permission(self, request, obj=None): - return False + # def has_delete_permission(self, request, obj=None): + # return False diff --git a/tokens/migrations/0002_token_icon_token_name_token_symbol.py b/tokens/migrations/0002_token_icon_token_name_token_symbol.py new file mode 100644 index 0000000..129f89a --- /dev/null +++ b/tokens/migrations/0002_token_icon_token_name_token_symbol.py @@ -0,0 +1,39 @@ +# Generated by Django 5.0.4 on 2024-06-20 17:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("tokens", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="token", + name="icon", + field=models.TextField( + help_text="Token icon (base64 data URL).", + null=True, + verbose_name="icon", + ), + ), + migrations.AddField( + model_name="token", + name="name", + field=models.CharField( + help_text="Token name.", max_length=255, null=True, verbose_name="name" + ), + ), + migrations.AddField( + model_name="token", + name="symbol", + field=models.CharField( + help_text="Token symbol.", + max_length=255, + null=True, + verbose_name="symbol", + ), + ), + ] diff --git a/tokens/migrations/0003_token_coingecko_id.py b/tokens/migrations/0003_token_coingecko_id.py new file mode 100644 index 0000000..91793d5 --- /dev/null +++ b/tokens/migrations/0003_token_coingecko_id.py @@ -0,0 +1,24 @@ +# Generated by Django 5.0.6 on 2024-07-17 17:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("tokens", "0002_token_icon_token_name_token_symbol"), + ] + + operations = [ + migrations.AddField( + model_name="token", + name="coingecko_id", + field=models.CharField( + default="near", + help_text="Token id on coingecko.", + max_length=255, + verbose_name="coingecko_id", + ), + preserve_default=False, + ), + ] diff --git a/tokens/migrations/0004_alter_token_coingecko_id.py b/tokens/migrations/0004_alter_token_coingecko_id.py new file mode 100644 index 0000000..d64b775 --- /dev/null +++ b/tokens/migrations/0004_alter_token_coingecko_id.py @@ -0,0 +1,23 @@ +# Generated by Django 5.0.4 on 2024-07-18 13:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("tokens", "0003_token_coingecko_id"), + ] + + operations = [ + migrations.AlterField( + model_name="token", + name="coingecko_id", + field=models.CharField( + help_text="Token id on coingecko.", + max_length=255, + null=True, + verbose_name="coingecko_id", + ), + ), + ] diff --git a/tokens/migrations/0005_alter_token_coingecko_id_alter_token_icon_and_more.py b/tokens/migrations/0005_alter_token_coingecko_id_alter_token_icon_and_more.py new file mode 100644 index 0000000..25d205a --- /dev/null +++ b/tokens/migrations/0005_alter_token_coingecko_id_alter_token_icon_and_more.py @@ -0,0 +1,56 @@ +# Generated by Django 5.0.4 on 2024-07-18 13:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("tokens", "0004_alter_token_coingecko_id"), + ] + + operations = [ + migrations.AlterField( + model_name="token", + name="coingecko_id", + field=models.CharField( + blank=True, + help_text="Token id on coingecko.", + max_length=255, + null=True, + verbose_name="coingecko_id", + ), + ), + migrations.AlterField( + model_name="token", + name="icon", + field=models.TextField( + blank=True, + help_text="Token icon (base64 data URL).", + null=True, + verbose_name="icon", + ), + ), + migrations.AlterField( + model_name="token", + name="name", + field=models.CharField( + blank=True, + help_text="Token name.", + max_length=255, + null=True, + verbose_name="name", + ), + ), + migrations.AlterField( + model_name="token", + name="symbol", + field=models.CharField( + blank=True, + help_text="Token symbol.", + max_length=255, + null=True, + verbose_name="symbol", + ), + ), + ] diff --git a/tokens/migrations/0006_rename_id_token_account.py b/tokens/migrations/0006_rename_id_token_account.py new file mode 100644 index 0000000..a485351 --- /dev/null +++ b/tokens/migrations/0006_rename_id_token_account.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.6 on 2024-07-19 22:52 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("tokens", "0005_alter_token_coingecko_id_alter_token_icon_and_more"), + ] + + operations = [ + migrations.RenameField( + model_name="token", + old_name="id", + new_name="account", + ), + ] diff --git a/tokens/models.py b/tokens/models.py index 1b4d071..4af6712 100644 --- a/tokens/models.py +++ b/tokens/models.py @@ -1,24 +1,57 @@ +from datetime import timedelta from decimal import Decimal +from os import name +import requests +from django.conf import settings from django.db import models from django.utils import timezone from django.utils.translation import gettext_lazy as _ from accounts.models import Account +from base.logging import logger +from base.utils import format_date class Token(models.Model): - id = models.OneToOneField( + account = models.OneToOneField( Account, on_delete=models.CASCADE, primary_key=True, help_text=_("Token ID (address)."), ) + name = models.CharField( + _("name"), + max_length=255, + null=True, + blank=True, + help_text=_("Token name."), + ) + symbol = models.CharField( + _("symbol"), + max_length=255, + null=True, + blank=True, + help_text=_("Token symbol."), + ) + icon = models.TextField( + _("icon"), + null=True, + blank=True, + help_text=_("Token icon (base64 data URL)."), + ) decimals = models.PositiveIntegerField( _("decimals"), null=False, help_text=_("Token decimals."), ) + coingecko_id = models.CharField( + _("coingecko_id"), + max_length=255, + null=True, + blank=True, + help_text=_("Token id on coingecko."), + ) def get_most_recent_price(self): return self.historical_prices.order_by("-timestamp").first() @@ -28,6 +61,72 @@ def format_price(self, amount_str: str): formatted_amount = Decimal(amount_str) / (Decimal("10") ** self.decimals) return formatted_amount + def fetch_usd_prices_common(self, timestamp): + + time_window = timedelta(hours=settings.HISTORICAL_PRICE_QUERY_HOURS or 24) + token_prices = TokenHistoricalPrice.objects.filter( + token=self, + timestamp__gte=timestamp - time_window, + timestamp__lte=timestamp + time_window, + ) + existing_token_price = token_prices.first() + if existing_token_price: + return existing_token_price.price_usd + + price_data = {} + if self.coingecko_id: + try: + logger.info( + "No existing price within acceptable time period; fetching historical pricefrom gecko..." + ) + endpoint = f"{settings.COINGECKO_URL}/coins/{self.coingecko_id}/history?date={format_date(timestamp)}&localization=false" + if settings.COINGECKO_API_KEY: + endpoint += f"&x_cg_pro_api_key={settings.COINGECKO_API_KEY}" + logger.info(f"coingecko endpoint: {endpoint}") + response = requests.get(endpoint) + logger.info(f"coingecko response: {response}") + if response.status_code == 429: + logger.warning("Coingecko rate limit exceeded") + price_data = response.json() + except Exception as e: + logger.warning(f"Failed to fetch coingecko price data: {e}") + return None + price_usd = ( + price_data.get("market_data", {}).get("current_price", {}).get("usd") + ) + if price_usd: + TokenHistoricalPrice.objects.create( + token=self, + timestamp=timestamp, + price_usd=price_usd, + ) + return Decimal(price_usd) + return None + + def save(self, *args, **kwargs): + try: + if self._state.adding: + endpoint = f"{settings.COINGECKO_URL}/coins/list?include_platform=true" + if settings.COINGECKO_API_KEY: + endpoint += f"&x_cg_pro_api_key={settings.COINGECKO_API_KEY}" + response = requests.get(endpoint) + logger.info(f"coingecko response: {response}") + if response.status_code == 429: + logger.warning("Coingecko rate limit exceeded") + price_data = response.json() + coin_data = list( + filter( + lambda x: x["symbol"] == self.symbol + and x["name"] == "Stellar", + price_data, + ) + ) + if coin_data: + self.coingecko_id = coin_data[0]["id"] + except Exception as e: + logger.error(f"Failed to fetch token id from coingecko: {e}") + super().save(*args, **kwargs) + class TokenHistoricalPrice(models.Model): token = models.ForeignKey( diff --git a/tokens/serializers.py b/tokens/serializers.py new file mode 100644 index 0000000..82b6f74 --- /dev/null +++ b/tokens/serializers.py @@ -0,0 +1,13 @@ +from rest_framework.serializers import ModelSerializer + +from tokens.models import Token + + +class TokenSerializer(ModelSerializer): + + class Meta: + model = Token + fields = "__all__" + + +SIMPLE_TOKEN_EXAMPLE = {"id": "near", "decimals": 24}