Skip to content

Commit

Permalink
Feature/contracts alpha 25 (#1358)
Browse files Browse the repository at this point in the history
* bump to contracts alpha 26

* update gasFeeMultiplier
  • Loading branch information
alexcos20 authored Mar 21, 2022
1 parent 6675de4 commit c01fb07
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 50 deletions.
16 changes: 8 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
"web3": "^1.7.1"
},
"dependencies": {
"@oceanprotocol/contracts": "1.0.0-alpha.22",
"@oceanprotocol/contracts": "1.0.0-alpha.26",
"bignumber.js": "^9.0.2",
"cross-fetch": "^3.1.5",
"crypto-js": "^4.1.1",
Expand Down
58 changes: 39 additions & 19 deletions src/pools/fixedRate/FixedRateExchange.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,17 +100,13 @@ export class FixedRateExchange {

/**
* Creates unique exchange identifier.
* @param {String} baseToken baseToken contract address
* @param {String} datatoken Datatoken contract address
* @param {String} owner Owner of the exchange
* @return {Promise<string>} exchangeId
*/
public async generateExchangeId(
baseToken: string,
datatoken: string,
owner: string
): Promise<string> {
public async generateExchangeId(baseToken: string, datatoken: string): Promise<string> {
const exchangeId = await this.contract.methods
.generateExchangeId(baseToken, datatoken, owner)
.generateExchangeId(baseToken, datatoken)
.call()
return exchangeId
}
Expand Down Expand Up @@ -816,20 +812,26 @@ export class FixedRateExchange {
* Estimate gas cost for collectBT
* @param {String} account
* @param {String} exchangeId ExchangeId
* @param {String} amount amount to be collected
* @param {Contract} contractInstance optional contract instance
* @return {Promise<number>}
*/
public async estCollectBT(
account: string,
exchangeId: string,
amount: string,
contractInstance?: Contract
): Promise<number> {
const fixedRate = contractInstance || this.fixedRateContract
const gasLimitDefault = this.GASLIMIT_DEFAULT
let estGas
const fixedrate: FixedPriceExchange = await this.contract.methods
.getExchange(exchangeId)
.call()
const amountWei = await this.amountToUnits(fixedrate.baseToken, amount)
try {
estGas = await fixedRate.methods
.collectBT(exchangeId)
.collectBT(exchangeId, amountWei)
.estimateGas({ from: account }, (err, estGas) => (err ? gasLimitDefault : estGas))
} catch (e) {
estGas = gasLimitDefault
Expand All @@ -838,20 +840,26 @@ export class FixedRateExchange {
}

/**
* Collect BaseTokens in the contract (only exchange owner)
* @param {String} exchangeId ExchangeId
* Collect BaseTokens in the contract (anyone can call this, funds are sent to erc20.paymentCollector)
* @param {String} address User address
* @param {String} exchangeId ExchangeId
* @param {String} amount amount to be collected
* @return {Promise<TransactionReceipt>} transaction receipt
*/
public async collectBT(
address: string,
exchangeId: string
exchangeId: string,
amount: string
): Promise<TransactionReceipt> {
const exchange = await this.getExchange(exchangeId)
if (!exchange) return null

const estGas = await this.estCollectBT(address, exchangeId)
const trxReceipt = await this.contract.methods.collectBT(exchangeId).send({
const estGas = await this.estCollectBT(address, exchangeId, amount)
const fixedrate: FixedPriceExchange = await this.contract.methods
.getExchange(exchangeId)
.call()
const amountWei = await this.amountToUnits(fixedrate.baseToken, amount)
const trxReceipt = await this.contract.methods.collectBT(exchangeId, amountWei).send({
from: address,
gas: estGas + 1,
gasPrice: await getFairGasPrice(this.web3, this.config)
Expand All @@ -863,20 +871,26 @@ export class FixedRateExchange {
* Estimate gas cost for collecDT
* @param {String} account
* @param {String} exchangeId ExchangeId
* @param {String} amount amount to be collected
* @param {Contract} contractInstance optional contract instance
* @return {Promise<number>}
*/
public async estCollectDT(
account: string,
exchangeId: string,
amount: string,
contractInstance?: Contract
): Promise<number> {
const fixedRate = contractInstance || this.fixedRateContract
const gasLimitDefault = this.GASLIMIT_DEFAULT
let estGas
const fixedrate: FixedPriceExchange = await this.contract.methods
.getExchange(exchangeId)
.call()
const amountWei = await this.amountToUnits(fixedrate.datatoken, amount)
try {
estGas = await fixedRate.methods
.collectDT(exchangeId)
.collectDT(exchangeId, amountWei)
.estimateGas({ from: account }, (err, estGas) => (err ? gasLimitDefault : estGas))
} catch (e) {
estGas = gasLimitDefault
Expand All @@ -885,20 +899,26 @@ export class FixedRateExchange {
}

/**
* Collect datatokens in the contract (only exchange owner)
* @param {String} exchangeId ExchangeId
* Collect datatokens in the contract (anyone can call this, funds are sent to erc20.paymentCollector)
* @param {String} address User address
* @param {String} exchangeId ExchangeId
* @param {String} amount amount to be collected
* @return {Promise<TransactionReceipt>} transaction receipt
*/
public async collectDT(
address: string,
exchangeId: string
exchangeId: string,
amount: string
): Promise<TransactionReceipt> {
const exchange = await this.getExchange(exchangeId)
if (!exchange) return null

const estGas = await this.estCollectDT(address, exchangeId)
const trxReceipt = await this.contract.methods.collectDT(exchangeId).send({
const estGas = await this.estCollectDT(address, exchangeId, amount)
const fixedrate: FixedPriceExchange = await this.contract.methods
.getExchange(exchangeId)
.call()
const amountWei = await this.amountToUnits(fixedrate.datatoken, amount)
const trxReceipt = await this.contract.methods.collectDT(exchangeId, amountWei).send({
from: address,
gas: estGas + 1,
gasPrice: await getFairGasPrice(this.web3, this.config)
Expand Down
12 changes: 8 additions & 4 deletions src/utils/ConfigHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ export const configHelperNetworks: Config[] = [
nodeUri: 'https://ropsten.infura.io/v3',
providerUri: 'https://v4.provider.ropsten.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.ropsten.oceanprotocol.com',
explorerUri: 'https://ropsten.etherscan.io'
explorerUri: 'https://ropsten.etherscan.io',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
Expand All @@ -50,7 +51,8 @@ export const configHelperNetworks: Config[] = [
nodeUri: 'https://rinkeby.infura.io/v3',
providerUri: 'https://v4.provider.rinkeby.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.rinkeby.oceanprotocol.com',
explorerUri: 'https://rinkeby.etherscan.io'
explorerUri: 'https://rinkeby.etherscan.io',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
Expand Down Expand Up @@ -83,7 +85,8 @@ export const configHelperNetworks: Config[] = [
nodeUri: 'https://rpc.api.moonbase.moonbeam.network',
providerUri: 'https://v4.provider.moonbase.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.moonbase.oceanprotocol.com',
explorerUri: 'https://moonbase.moonscan.io/'
explorerUri: 'https://moonbase.moonscan.io/',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
Expand All @@ -101,7 +104,8 @@ export const configHelperNetworks: Config[] = [
nodeUri: 'https://polygon-mumbai.infura.io/v3',
providerUri: 'https://v4.provider.mumbai.oceanprotocol.com',
subgraphUri: 'https://v4.subgraph.mumbai.oceanprotocol.com',
explorerUri: 'https://mumbai.polygonscan.com'
explorerUri: 'https://mumbai.polygonscan.com',
gasFeeMultiplier: 1.1
},
{
...configHelperNetworksBase,
Expand Down
5 changes: 0 additions & 5 deletions test/unit/pools/dispenser/Dispenser.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,6 @@ describe('Dispenser flow', () => {
assert(tx, 'user3 failed to get 1DT')
})

it('tries to withdraw all datatokens', async () => {
const tx = await DispenserClass.ownerWithdraw(dtAddress, user3)
assert(tx === null, 'Request should fail')
})

it('user2 withdraws all datatokens', async () => {
const tx = await DispenserClass.ownerWithdraw(dtAddress, contracts.accounts[0])
assert(tx, 'user2 failed to withdraw all her tokens')
Expand Down
25 changes: 12 additions & 13 deletions test/unit/pools/fixedRate/FixedRateExchange.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import OPFCollector from '@oceanprotocol/contracts/artifacts/contracts/community
import { NftFactory, NftCreateData } from '../../../../src/factories/NFTFactory'
import { FixedRateExchange } from '../../../../src/pools/fixedRate/FixedRateExchange'
import { FreCreationParams, Erc20CreateParams } from '../../../../src/@types'
import { amountToUnits, unitsToAmount } from '../../../../src/utils/ContractUtils'
const web3 = new Web3('http://127.0.0.1:8545')

describe('Fixed Rate unit test', () => {
Expand Down Expand Up @@ -193,7 +194,7 @@ describe('Fixed Rate unit test', () => {

it('#generate exchangeId - should generate a specific exchangeId', async () => {
expect(
await fixedRate.generateExchangeId(contracts.daiAddress, dtAddress, exchangeOwner)
await fixedRate.generateExchangeId(contracts.daiAddress, dtAddress)
).to.equal(exchangeId)
})

Expand Down Expand Up @@ -348,9 +349,10 @@ describe('Fixed Rate unit test', () => {
// user2 buys 1 DT
await fixedRate.buyDT(user2, exchangeId, '1', '2')
// 1 DAI in the contract
expect((await fixedRate.getExchange(exchangeId)).btBalance).to.equal('1')
const fixedRateDetails = await fixedRate.getExchange(exchangeId)
expect(fixedRateDetails.btBalance).to.equal('1')
// owner collects BTs
await fixedRate.collectBT(exchangeOwner, exchangeId)
await fixedRate.collectBT(exchangeOwner, exchangeId, fixedRateDetails.btBalance)
// btBalance is zero
expect((await fixedRate.getExchange(exchangeId)).btBalance).to.equal('0')
})
Expand All @@ -359,7 +361,7 @@ describe('Fixed Rate unit test', () => {
// 9 dts left
expect(result.dtBalance).to.equal('9')
// owner collects DTs
await fixedRate.collectDT(exchangeOwner, exchangeId)
await fixedRate.collectDT(exchangeOwner, exchangeId, result.dtBalance)
// no more dts in the contract
const result2 = await fixedRate.getExchange(exchangeId)
expect(result2.dtBalance).to.equal('0')
Expand All @@ -383,7 +385,7 @@ describe('Fixed Rate unit test', () => {
expect(result.oceanFeeAvailable).to.equal('0.042')
// user3 is the marketFeeCollector
expect(await daiContract.methods.balanceOf(user3).call()).to.equal(
web3.utils.toWei('0.021')
web3.utils.toWei('1.021')
)
})

Expand Down Expand Up @@ -508,11 +510,7 @@ describe('Fixed Rate unit test', () => {

it('#generate exchangeId - should generate a specific exchangeId', async () => {
expect(
await fixedRate.generateExchangeId(
contracts.usdcAddress,
dtAddress,
exchangeOwner
)
await fixedRate.generateExchangeId(contracts.usdcAddress, dtAddress)
).to.equal(exchangeId)
})

Expand Down Expand Up @@ -661,9 +659,10 @@ describe('Fixed Rate unit test', () => {
// user2 buys 1 DT
await fixedRate.buyDT(user2, exchangeId, '1', '2')
// 1 DAI in the contract
expect((await fixedRate.getExchange(exchangeId)).btBalance).to.equal('1')
const exchangeDetails = await fixedRate.getExchange(exchangeId)
expect(exchangeDetails.btBalance).to.equal('1')
// owner collects BTs
await fixedRate.collectBT(exchangeOwner, exchangeId)
await fixedRate.collectBT(exchangeOwner, exchangeId, exchangeDetails.btBalance)
// btBalance is zero
expect((await fixedRate.getExchange(exchangeId)).btBalance).to.equal('0')
})
Expand All @@ -672,7 +671,7 @@ describe('Fixed Rate unit test', () => {
// 9 dts left
expect(result.dtBalance).to.equal('9')
// owner collects DTs
await fixedRate.collectDT(exchangeOwner, exchangeId)
await fixedRate.collectDT(exchangeOwner, exchangeId, result.dtBalance)
// no more dts in the contract
const result2 = await fixedRate.getExchange(exchangeId)
expect(result2.dtBalance).to.equal('0')
Expand Down

0 comments on commit c01fb07

Please sign in to comment.