Skip to content

Commit

Permalink
online fix
Browse files Browse the repository at this point in the history
  • Loading branch information
guoshijiang authored and guoshijiang committed Apr 7, 2024
1 parent 764b30a commit 95f3deb
Show file tree
Hide file tree
Showing 8 changed files with 530 additions and 1 deletion.
32 changes: 32 additions & 0 deletions api/l3staking/api_v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
StakingStrategy,
Node,
)
from services.appchain_client import (
AppChainClient
)


# @check_api_token
Expand Down Expand Up @@ -37,3 +40,32 @@ def get_staking_node_list(request):
"node_list": staking_node_list
})
return ok_json(staking_strategies_node_list)


# @check_api_token
def get_node_detail(request):
params = json.loads(request.body.decode())
node_id = params.get('node_id', 0)
chain_id = params.get('chain_id', "0")
staker_address = params.get('staker_address', "0x")
strategies = params.get('strategies', "0x")
type = params.get('type', "L1")
appChainClient = AppChainClient()
if type in ["L1", "l1"]:
l1_stakers_rewards = appChainClient.l1_staker_reward_amount(
chain_id=chain_id,
staker_address=staker_address,
strategies=strategies,
)
print(l1_stakers_rewards)
else:
l2_stakers_rewards = appChainClient.l2_staker_reward_amount(
chain_id=chain_id,
staker_address=staker_address,
strategy=strategies,
)
print(l2_stakers_rewards)
staking_node = Node.objects.filter(id=node_id).first()
if staking_node is None:
return error_json("Do not exist node", 4000)
return ok_json(staking_node.as_dict())
4 changes: 3 additions & 1 deletion api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@

from api.l3staking.api_v1 import (
get_staking_chains,
get_staking_node_list
get_staking_node_list,
get_node_detail
)


Expand Down Expand Up @@ -139,4 +140,5 @@
# l3staking
path(r'get_staking_chains', get_staking_chains, name='get_staking_chains'),
path(r'get_staking_node_list', get_staking_node_list, name='get_staking_node_list'),
path(r'get_node_detail', get_node_detail, name='get_node_detail'),
]
18 changes: 18 additions & 0 deletions l3staking/migrations/0005_node_detail.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.1.1 on 2024-04-01 11:59

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('l3staking', '0004_stakingchain_icon'),
]

operations = [
migrations.AddField(
model_name='node',
name='detail',
field=models.CharField(default='unknown', max_length=500, verbose_name='节点详情'),
),
]
7 changes: 7 additions & 0 deletions l3staking/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,12 @@ class Node(BaseModel):
unique=False,
verbose_name='节点名称'
)
detail = models.CharField(
default="unknown",
max_length=500,
unique=False,
verbose_name='节点详情'
)
eth_income = models.CharField(
default="0",
max_length=500,
Expand Down Expand Up @@ -179,6 +185,7 @@ def as_dict(self):
'chain': self.chain.name,
'strategy': self.strategy.name,
'name': self.name,
'detail': self.detail,
'eth_income': self.eth_income,
'eth_income_rate': self.eth_income_rate,
'dp_income': self.dp_income,
Expand Down
32 changes: 32 additions & 0 deletions services/appchain_client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# encoding=utf-8

import grpc
from django.conf import settings
from services.savour_rpc import appchain_pb2_grpc, appchain_pb2


class AppChainClient:
def __init__(self):
options = [
('grpc.max_receive_message_length', settings.GRPC_MAX_MESSAGE_LENGTH),
]
channel = grpc.insecure_channel("acorus-rpc.testnet.dapplink.xyz:443", options=options)
self.stub = appchain_pb2_grpc.AppChainServiceStub(channel)

def l1_staker_reward_amount(self, chain_id: str, staker_address: str, strategies: str, consumer_token: str = None) -> appchain_pb2.L1StakerRewardsAmountResponse:
return self.stub.L1StakerRewardsAmount(
appchain_pb2.L1StakerRewardsAmountRequest(
chain_id=chain_id,
staker_address=staker_address,
strategies=strategies
)
)

def l2_staker_reward_amount(self, chain_id: str, staker_address: str, strategy: str, consumer_token: str = None) -> appchain_pb2.L2StakerRewardsAmountResponse:
return self.stub.L2StakerRewardsAmount(
appchain_pb2.L2StakerRewardsAmountRequest(
chain_id=chain_id,
staker_address=staker_address,
strategy=strategy
)
)
56 changes: 56 additions & 0 deletions services/savour_rpc/appchain_grpc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Generated by the Protocol Buffers compiler. DO NOT EDIT!
# source: savour_rpc/appchain.proto
# plugin: grpclib.plugin.main
import abc
import typing

import grpclib.const
import grpclib.client
if typing.TYPE_CHECKING:
import grpclib.server

from services.savour_rpc import appchain_pb2


class AppChainServiceBase(abc.ABC):

@abc.abstractmethod
async def L1StakerRewardsAmount(self, stream: 'grpclib.server.Stream[appchain_pb2.L1StakerRewardsAmountRequest, savour_rpc.appchain_pb2.L1StakerRewardsAmountResponse]') -> None:
pass

@abc.abstractmethod
async def L2StakerRewardsAmount(self, stream: 'grpclib.server.Stream[appchain_pb2.L2StakerRewardsAmountRequest, savour_rpc.appchain_pb2.L2StakerRewardsAmountResponse]') -> None:
pass

def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
return {
'/services.savour_rpc.appchain.AppChainService/L1StakerRewardsAmount': grpclib.const.Handler(
self.L1StakerRewardsAmount,
grpclib.const.Cardinality.UNARY_UNARY,
appchain_pb2.L1StakerRewardsAmountRequest,
appchain_pb2.L1StakerRewardsAmountResponse,
),
'/services.savour_rpc.appchain.AppChainService/L2StakerRewardsAmount': grpclib.const.Handler(
self.L2StakerRewardsAmount,
grpclib.const.Cardinality.UNARY_UNARY,
appchain_pb2.L2StakerRewardsAmountRequest,
appchain_pb2.L2StakerRewardsAmountResponse,
),
}


class AppChainServiceStub:

def __init__(self, channel: grpclib.client.Channel) -> None:
self.L1StakerRewardsAmount = grpclib.client.UnaryUnaryMethod(
channel,
'/services.savour_rpc.appchain.AppChainService/L1StakerRewardsAmount',
appchain_pb2.L1StakerRewardsAmountRequest,
appchain_pb2.L1StakerRewardsAmountResponse,
)
self.L2StakerRewardsAmount = grpclib.client.UnaryUnaryMethod(
channel,
'/services.savour_rpc.appchain.AppChainService/L2StakerRewardsAmount',
appchain_pb2.L2StakerRewardsAmountRequest,
appchain_pb2.L2StakerRewardsAmountResponse,
)
Loading

0 comments on commit 95f3deb

Please sign in to comment.