Skip to content

Commit

Permalink
Harvest arthera network (#427)
Browse files Browse the repository at this point in the history
  • Loading branch information
hichri-louay committed Feb 23, 2024
2 parents c88a317 + 714b770 commit 4bbda4e
Show file tree
Hide file tree
Showing 7 changed files with 147 additions and 51 deletions.
36 changes: 28 additions & 8 deletions blockchainConnexion.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const {
web3UrlArthera,
CampaignConstants,
OracleConstants,
ArtheraNetworkConstant,
} = require('./conf/const')
const { Campaigns, Event } = require('./model/index')
const { TronConstant } = require('./conf/const')
Expand Down Expand Up @@ -166,17 +167,28 @@ exports.getCampaignContractByHashCampaign = async (
tronWeb = null
) => {
try {
var ctr
var campaign = await Campaigns.findOne({ hash })
if (campaign?.contract) {
if (!!tronWeb) {
let ctr = await tronWeb.contract(
ctr = await tronWeb.contract(
TronConstant.campaign.abi,
TronConstant.campaign.address
)
return ctr
} else {
if (campaign.token.type === 'ARTHERA') {
ctr = new credentials.Web3ARTHERA.eth.Contract(
CampaignConstants[ArtheraNetworkConstant].abi,
CampaignConstants[ArtheraNetworkConstant].address
)
} else {
credentials.network = campaign.token.type
ctr = this.getContractByNetwork(credentials)
}

return ctr
}
credentials.network = campaign.token.type
return this.getContractByNetwork(credentials)
}
} catch (err) {}
}
Expand Down Expand Up @@ -230,11 +242,19 @@ exports.getCampaignOwnerAddr = async (idProm) => {

exports.getOracleContractByCampaignContract = async (credentials = false) => {
try {
var contract = new credentials.WEB3.eth.Contract(
OracleConstants[credentials.network.toUpperCase()].abi,
OracleConstants[credentials.network.toUpperCase()].address
)
contract.getGasPrice = credentials.WEB3.eth.getGasPrice
var contract
if (!!credentials.Web3ARTHERA) {
contract = new credentials.Web3ARTHERA.eth.Contract(
OracleConstants[ArtheraNetworkConstant].abi,
OracleConstants[ArtheraNetworkConstant].address
)
} else {
contract = new credentials.WEB3.eth.Contract(
OracleConstants[credentials.network.toUpperCase()].abi,
OracleConstants[credentials.network.toUpperCase()].address
)
contract.getGasPrice = credentials.WEB3.eth.getGasPrice
}

return contract
} catch (err) {}
Expand Down
1 change: 1 addition & 0 deletions conf/const.js
Original file line number Diff line number Diff line change
Expand Up @@ -5819,6 +5819,7 @@ BttConstants.token.satt = process.env.CONST_TOKEN_SATT_BTT_ADDRESS
BttConstants.campaign.address = process.env.CONST_CAMPAIGN_ADDRESS_BTT
ArtheraConstants.campaign.address = process.env.CONST_CAMPAIGN_ADDRESS_ARTHERA
BttConstants.oracle.address = process.env.CONST_ORACLE_ADDRESS_BTT
ArtheraConstants.oracle.address = process.env.CONST_ORACLE_ADDRESS_ARTHERA
TronConstant.token.satt = process.env.CONST_TOKEN_SATT_TRON_ADDRESS
TronConstant.campaign.address = process.env.CONST_CAMPAIGN_ADDRESS_TRON
TronConstant.oracle.address = process.env.CONST_ORACLE_ADDRESS_TRON
Expand Down
56 changes: 35 additions & 21 deletions controllers/campaign.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const { create } = require('ipfs-http-client')
var mongoose = require('mongoose')
var fs = require('fs')
const axios = require('axios')
const { CampaignConstants, ArtheraNetworkConstant } = require('../conf/const')

const cron = require('node-cron')
//const ipfs = IPFS('ipfs.infura.io', '5001', {protocol: 'https'})
Expand Down Expand Up @@ -1561,7 +1562,6 @@ exports.validateCampaign = async (req, res) => {
return responseHandler.makeResponseError(res, 401, 'unothorized')
}
} catch (err) {
console.log({ err })
return responseHandler.makeResponseError(
res,
500,
Expand Down Expand Up @@ -1595,8 +1595,10 @@ exports.gains = async (req, res) => {
var wrappedTrx = false
campaignData = await Campaigns.findOne({ hash: hash }).lean()
req.body.network = campaignData.token.type
credentials = await unlockV2(req, res)

credentials =
req.body.network === 'ARTHERA'
? await unlockArthera(req, res)
: await unlockV2(req, res)
if (campaignData.token.type === 'TRON') {
let privateKey = (
await getWalletTron(req.user._id, req.body.pass)
Expand All @@ -1612,8 +1614,16 @@ exports.gains = async (req, res) => {
wrappedTrx = campaignData.token.addr === TronConstant.token.wtrx
tronWeb.wrappedTrx = wrappedTrx
} else {
ctr = await getPromContract(idProm, credentials)
gasPrice = await ctr.getGasPrice()
if (req.body.network === 'ARTHERA') {
ctr = new credentials.Web3ARTHERA.eth.Contract(
CampaignConstants[ArtheraNetworkConstant].abi,
CampaignConstants[ArtheraNetworkConstant].address
)
gasPrice = await credentials.Web3ARTHERA.eth.getGasPrice()
} else {
ctr = await getPromContract(idProm, credentials)
gasPrice = await ctr.getGasPrice()
}
}

let prom =
Expand Down Expand Up @@ -1642,7 +1652,8 @@ exports.gains = async (req, res) => {
idProm,
credentials,
tronWeb,
campaignData.token.addr
campaignData.token.addr,
req.body.network
)
return responseHandler.makeResponseData(
res,
Expand All @@ -1658,7 +1669,12 @@ exports.gains = async (req, res) => {
let maxBountieFollowers =
bountie.categories[bountie.categories.length - 1]
.maxFollowers
var evts = await updateBounty(idProm, credentials, tronWeb)
var evts = await updateBounty(
idProm,
credentials,
tronWeb,
req.body.network
)
stats = link.abosNumber
if (+stats >= +maxBountieFollowers) {
stats = (+maxBountieFollowers - 1).toString()
Expand Down Expand Up @@ -1696,9 +1712,8 @@ exports.gains = async (req, res) => {
idProm,
credentials,
tronWeb,
campaignData.token.addr
? campaignData.token.addr
: Constants.token.native
campaignData.token.addr,
req.body.network
)

if (ret) {
Expand Down Expand Up @@ -1756,15 +1771,13 @@ exports.gains = async (req, res) => {
if (stats.views === 'old') stats.views = link?.views
stats.shares = stats?.shares || 0
stats.likes = stats?.likes || 0

requests = await Request.find({
new: true,
isBounty: false,
typeSN: prom.typeSN,
idPost: prom.idPost,
idUser: prom.idUser,
})

if (!requests.length) {
if (
!prevstat.length ||
Expand All @@ -1776,7 +1789,8 @@ exports.gains = async (req, res) => {
idProm,
credentials,
tronWeb,
res
res,
req.body.network
)
if (evts?.error)
return responseHandler.makeResponseError(
Expand All @@ -1786,13 +1800,13 @@ exports.gains = async (req, res) => {
? evts.error.message
: evts.error.error
)

var evt = evts.events[0]
var idRequest =
(!!tronWeb && evt.result.idRequest) || evt.raw.topics[1]
requests = [{ id: idRequest }]
}
}

if (requests && requests.length) {
await Request.updateOne(
{ id: requests[0].id },
Expand Down Expand Up @@ -1833,11 +1847,9 @@ exports.gains = async (req, res) => {
idProm,
credentials,
tronWeb,
campaignData.token.addr
? campaignData.token.addr
: Constants.token.native
campaignData.token.addr,
req.body.network
)

if (ret) {
await CampaignLink.updateOne(
{ id_prom: idProm },
Expand Down Expand Up @@ -1869,12 +1881,14 @@ exports.gains = async (req, res) => {
)
} finally {
credentials && lock(credentials)

if (ret?.transactionHash) {
let campaignType = {}

let network = !!credentials && credentials.WEB3

let network =
!!credentials &&
(campaignData.token.type === 'ARTHERA'
? credentials.Web3ARTHERA
: credentials.WEB3)
let amount = await getTransactionAmount(
credentials,
campaignData.token.type,
Expand Down
7 changes: 6 additions & 1 deletion controllers/external.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -1156,7 +1156,12 @@ module.exports.externalAnswer = async (req, res) => {
)
let maxBountieFollowers =
bountie.categories[bountie.categories.length - 1].maxFollowers
var evts = await updateBounty(idProm, credentials, tronWeb)
var evts = await updateBounty(
idProm,
credentials,
tronWeb,
campaignData.token.type
)
stats = link.abosNumber
if (+stats >= +maxBountieFollowers) {
stats = (+maxBountieFollowers - 1).toString()
Expand Down
38 changes: 26 additions & 12 deletions manager/oracles.js
Original file line number Diff line number Diff line change
Expand Up @@ -1224,12 +1224,19 @@ exports.answerBounty = async function (opts) {

campaignWallet = JSON.parse(campaignKeystore)

opts.credentials.WEB3.eth.accounts.wallet.decrypt(
[campaignWallet],
process.env.CAMPAIGN_OWNER_PASS
)

var gasPrice = await contract.getGasPrice()
!!opts.credentials.Web3ARTHERA
? opts.credentials.Web3ARTHERA.eth.accounts.wallet.decrypt(
[campaignWallet],
process.env.CAMPAIGN_OWNER_PASS
)
: opts.credentials.WEB3.eth.accounts.wallet.decrypt(
[campaignWallet],
process.env.CAMPAIGN_OWNER_PASS
)

var gasPrice = !!opts.credentials.Web3ARTHERA
? await opts.credentials.Web3ARTHERA.eth.getGasPrice()
: await contract.getGasPrice()

var receipt = await contract.methods
.answerBounty(opts.campaignContract, opts.idProm, opts.nbAbos)
Expand Down Expand Up @@ -1407,12 +1414,19 @@ exports.answerCall = async (opts) => {

campaignWallet = JSON.parse(campaignKeystore)

opts.credentials.WEB3.eth.accounts.wallet.decrypt(
[campaignWallet],
process.env.CAMPAIGN_OWNER_PASS
)

var gasPrice = await contract.getGasPrice()
!!opts.credentials.Web3ARTHERA
? opts.credentials.Web3ARTHERA.eth.accounts.wallet.decrypt(
[campaignWallet],
process.env.CAMPAIGN_OWNER_PASS
)
: opts.credentials.WEB3.eth.accounts.wallet.decrypt(
[campaignWallet],
process.env.CAMPAIGN_OWNER_PASS
)

var gasPrice = !!opts.credentials.Web3ARTHERA
? await opts.credentials.Web3ARTHERA.eth.getGasPrice()
: await contract.getGasPrice()
var receipt = await contract.methods
.answer(
opts.campaignContract,
Expand Down
1 change: 1 addition & 0 deletions middleware/campaignValidator.middleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ const schemas = {
'polygon',
'tron',
'bttc',
'arthera',
]),
}),

Expand Down
Loading

0 comments on commit 4bbda4e

Please sign in to comment.