diff --git a/src/components/chain/contract/ERC20.js b/src/components/chain/contract/ERC20.js
index 7b2ca38..a159937 100644
--- a/src/components/chain/contract/ERC20.js
+++ b/src/components/chain/contract/ERC20.js
@@ -30,7 +30,9 @@ export class ERC20 {
return contract.balanceOf(address);
}
- async allowance(provider, tokenAddress, owner, spender) {
+ async allowance(tokenAddress, spender) {
+ const provider = this.bc.eoaProvider;
+ const owner = provider.getSigner().getAddress();
const contract = new Contract(tokenAddress, erc20Abi, provider.getSigner());
return contract.allowance(owner, spender);
}
diff --git a/src/components/chain/contract/Vester.js b/src/components/chain/contract/Vester.js
index e531330..a94f62a 100644
--- a/src/components/chain/contract/Vester.js
+++ b/src/components/chain/contract/Vester.js
@@ -55,10 +55,11 @@ export class Vester {
* @returns
*/
async claim() {
+ const userAddress = await this.bc.eoaProvider.getSigner().getAddress()
return this.execMethod({
provider: this.bc.eoaProvider,
method: 'claim',
- params: []
+ params: [userAddress]
});
}
/**
@@ -89,10 +90,11 @@ export class Vester {
* 查询当前用户可以领取的CEC数量
*/
async queryClaimable() {
+ const userAddress = await this.bc.eoaProvider.getSigner().getAddress()
return this.queryMethod({
provider: this.bc.eoaProvider,
method: 'claimable',
- params: []
+ params: [userAddress]
});
}
/**
diff --git a/src/components/chain/utils.js b/src/components/chain/utils.js
index d79ec9d..e834198 100644
--- a/src/components/chain/utils.js
+++ b/src/components/chain/utils.js
@@ -280,4 +280,11 @@ export const parseTradeEvent = (event) => {
usd = (amount * price.price).toFixed(2)
}
return {icon, price, usd, currencyName, amount: amountBn, decimals: currencyData.decimals}
+}
+
+export const queryCECPrice = async() => {
+ const tokenAddress = '0x111111267109489dc6f350608d5113B10c0C5cd7'
+ const url = `https://price.api.cx.metamask.io/v2/chains/56/spot-prices?tokenAddresses=${tokenAddress}&vsCurrency=usd&includeMarketData=true`
+ const res = await fetch(url).then(res => res.json());
+ return res[tokenAddress].price
}
\ No newline at end of file
diff --git a/src/components/staking/header.vue b/src/components/staking/header.vue
index 0c74b2a..9288cff 100644
--- a/src/components/staking/header.vue
+++ b/src/components/staking/header.vue
@@ -25,7 +25,7 @@
CEC staking
-
{{ stakingStore.cecInfoData.CecStaked }}
+
{{ priceCalculated(cecInfoData.CecStaked) }}
@@ -36,7 +36,7 @@
CEC disarm
-
{{ stakingStore.cecInfoData.CecDisarm }}
+
{{ priceCalculated(cecInfoData.CecDisarm) }}
@@ -47,7 +47,7 @@
CEC collection
-
{{ stakingStore.cecInfoData.CecCollection }}
+
{{ priceCalculated(cecInfoData.CecCollection) }}
@@ -60,7 +60,7 @@
esCEC
-
{{ stakingStore.cecInfoData.esCecBalance }}
+
{{ priceCalculated(cecInfoData.esCecBalance) }}
@@ -71,7 +71,7 @@
esCEC Staking
-
{{ stakingStore.cecInfoData.esCecStaked }}
+
{{ priceCalculated(cecInfoData.esCecStaked) }}
@@ -82,7 +82,7 @@
esCEC conversion
-
{{ stakingStore.cecInfoData.esCecConversion }}
+
{{ priceCalculated(cecInfoData.esCecConversion) }}
@@ -93,7 +93,7 @@
esCEC collection
-
{{ stakingStore.cecInfoData.esCecCollection }}
+
{{ priceCalculated(cecInfoData.esCecCollection) }}
@@ -178,15 +178,24 @@ const getCecData = async () => {
// esCecStaked: 0,
// esCecConversion: 0,
// esCecCollection: 0,
+ let address = localWalletStore.address
+ if (!address) return
let timer = setInterval( async () => {
- cecInfoData.value.cecBalance = parseInt(await bc.erc20.balanceOf(address)).toString()
- cecInfoData.value.esCecBalance = parseInt(await bc.erc20.esCecBalanceOf(address)).toString()
- cecInfoData.value.CecStaked = parseInt(await bc.staking.queryCECStaked()).toString()
- cecInfoData.value.esCecStaked = parseInt(await bc.staking.queryEsCECStaked()).toString()
- let res = parseInt(await bc.staking.queryClaimableByCEC())
- // let ClaimableByCEC = await bc.staking.queryCumulativeByCEC()
- // let ClaimableByEsCEC = await bc.staking.queryClaimableByEsCEC()
- console.log(cecInfoData.value.CecStaked,res)
+ cecInfoData.value.cecBalance = BigInt(await bc.erc20.balanceOf(address)).toString()
+ cecInfoData.value.esCecBalance = BigInt(await bc.erc20.esCecBalanceOf(address)).toString()
+ cecInfoData.value.CecStaked = BigInt(await bc.staking.queryCECStaked()).toString()
+ cecInfoData.value.esCecStaked = BigInt(await bc.staking.queryEsCECStaked()).toString()
+ cecInfoData.value.esCecConversion = BigInt(await bc.vester.queryVested()).toString()
+ // 锁定的cec 等于 转换中的esCec数量
+ cecInfoData.value.CecDisarm = cecInfoData.value.esCecConversion;
+ try {
+ cecInfoData.value.CecCollection = await bc.vester.queryClaimable()
+ const stakeCecCollection = await bc.staking.queryClaimableByCEC()
+ const stakeEsCecCollection = await bc.staking.queryClaimableByEsCEC()
+ cecInfoData.value.esCecCollection = (BigInt(stakeCecCollection) + BigInt(stakeEsCecCollection)).toString()
+ } catch (e) {
+ console.log('query claimable error', e)
+ }
clearInterval(timer);
}, 2000);
// let cec = await bc.staking.queryCECStaked()
diff --git a/src/components/staking/index.vue b/src/components/staking/index.vue
index 68050e3..3d68fe9 100644
--- a/src/components/staking/index.vue
+++ b/src/components/staking/index.vue
@@ -163,14 +163,22 @@ const dialogUnstakeText = ref({
})
const unCecStaked = async () => {
- console.log(localWalletStore.address, STAKING_ADDRESSES[chainId].stakedCecTracker,stakingStore.cecInfoData.cecBalance)
- // try{
- // let res = await bc.erc20.approve(STAKING_ADDRESSES[chainId].stakedCecTracker, STAKING_ADDRESSES[chainId].cec,(1*1e18).toString())
- // } catch (e) {
- // console.log(e)
- // }
- let res = await bc.staking.stakeCec(localWalletStore.address,(1*1e18).toString())
- console.log(res)
+ const amount = BigInt(1 * 1e18)
+ console.log(localWalletStore.address, STAKING_ADDRESSES[chainId].cec, (1*1e18).toString())
+ try{
+ let allow = await bc.erc20.allowance(STAKING_ADDRESSES[chainId].cec, STAKING_ADDRESSES[chainId].stakedCecTracker)
+ allow = BigInt(allow)
+ if (allow < amount) {
+ console.log('not enough allowance')
+ let res = await bc.erc20.approve(STAKING_ADDRESSES[chainId].stakedCecTracker, STAKING_ADDRESSES[chainId].cec, amount)
+ await res.wait()
+ }
+ let res2 = await bc.staking.stakeCec(amount)
+ console.log(res2)
+ } catch (e) {
+ console.log(e)
+ }
+
}
diff --git a/src/configs/configchain.js b/src/configs/configchain.js
index b5c7a38..2b6e09e 100644
--- a/src/configs/configchain.js
+++ b/src/configs/configchain.js
@@ -108,12 +108,12 @@ export const STAKING_ADDRESSES = {
cec: '0xfa1223747bae6d519580c53Cbb9C11a45b13c6b7',
esCec: '0x1FbA3F84e62163069050f1156b73C008722136A3',
vester: '0x41a7f94f0B3b615F84c7084F45556FEf1bd18A18',
- stakedCecRouter: '0xE9AFdA5939023a7B4104931030a32CFAC99f4af8',
- stakedCecTracker: '0x18B41FbA9E096bc3E0A1F6aa92617B819Df6A602',
- stakedCecDistributor: '0xA4f4452b4B91C27B84275ebcfBCca1c277FFA15b',
- stakedEsCecRouter: '0x2B656F1c485913577461e06bbf5adC999BC7743B',
- stakedEsCecTracker: '0x9679DE719eCe856Fe40E1f68C5ed48b344181035',
- stakedEsCecDistributor: '0x11440cE5a7d6a1e6fa1e9fd790EBa93476F0DeA0',
+ stakedCecRouter: '0x576c3D53c6d4A19471E216c06945d41EC39f6014',
+ stakedCecTracker: '0x7554e677fF63212264db26dc743c67C277f219d2',
+ stakedCecDistributor: '0x53153a177F4483b53b3f732Ff63eeB48c6FE89E5',
+ stakedEsCecRouter: '0x19934736a578527cF725a33201445166Cbb62e52',
+ stakedEsCecTracker: '0x30cd668d0f280C404aD504bFf5d7a3Bf535f2A92',
+ stakedEsCecDistributor: '0x6Ee091c2c242470f4f6D3d55604e1a66c6FF4ff5',
}
}
diff --git a/src/configs/priceCalculate.js b/src/configs/priceCalculate.js
index 22d429d..4f5923d 100644
--- a/src/configs/priceCalculate.js
+++ b/src/configs/priceCalculate.js
@@ -3,6 +3,9 @@ import { ethers } from "ethers"
// 计算价格精度
export const priceCalculated = (price, decimals=18) => {
+ if (!price) {
+ return '0.00000'
+ }
let str = Number(ethers.utils.formatUnits(price, decimals)).toFixed(5)
if(str == '0.00000') {
str = '<0.00001'