mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
Adding estimate gas method and fixing tests
This commit is contained in:
parent
4eefc083e2
commit
8c9e46a8dd
@ -1364,6 +1364,42 @@ export class Datatoken {
|
|||||||
return this.web3.utils.fromWei(balance)
|
return this.web3.utils.fromWei(balance)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev estGasSetPublishingMarketFee
|
||||||
|
* Estimating gas for publishMarketFeeAddress method
|
||||||
|
* @param {string} datatokenAddress Datatoken adress
|
||||||
|
* @param {string} publishMarketFeeAddress new publish Market Fee Address
|
||||||
|
* @param {string} publishMarketFeeToken new publish Market Fee Token
|
||||||
|
* @param {string} publishMarketFeeAmount new fee amount
|
||||||
|
* @param {String} address user adress
|
||||||
|
*/
|
||||||
|
public async estGasSetPublishingMarketFee(
|
||||||
|
datatokenAddress: string,
|
||||||
|
publishMarketFeeAddress: string,
|
||||||
|
publishMarketFeeToken: string,
|
||||||
|
publishMarketFeeAmount: string,
|
||||||
|
address: string
|
||||||
|
): Promise<number> {
|
||||||
|
// Estimate gas cost for publishMarketFeeAddress method
|
||||||
|
const gasLimitDefault = this.GASLIMIT_DEFAULT
|
||||||
|
const dtContract = new this.web3.eth.Contract(this.datatokensAbi, datatokenAddress, {
|
||||||
|
from: address
|
||||||
|
})
|
||||||
|
let estGas
|
||||||
|
try {
|
||||||
|
estGas = await dtContract.methods
|
||||||
|
.setPublishingMarketFee(
|
||||||
|
publishMarketFeeAddress,
|
||||||
|
publishMarketFeeToken,
|
||||||
|
publishMarketFeeAmount
|
||||||
|
)
|
||||||
|
.estimateGas({ from: address }, (err, estGas) => (err ? gasLimitDefault : estGas))
|
||||||
|
} catch (error) {
|
||||||
|
estGas = gasLimitDefault
|
||||||
|
}
|
||||||
|
return estGas
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev setPublishingMarketFee
|
* @dev setPublishingMarketFee
|
||||||
* Only publishMarketFeeAddress can call it
|
* Only publishMarketFeeAddress can call it
|
||||||
@ -1384,13 +1420,24 @@ export class Datatoken {
|
|||||||
const dtContract = new this.web3.eth.Contract(this.datatokensAbi, datatokenAddress, {
|
const dtContract = new this.web3.eth.Contract(this.datatokensAbi, datatokenAddress, {
|
||||||
from: address
|
from: address
|
||||||
})
|
})
|
||||||
|
const estGas = await this.estGasSetPublishingMarketFee(
|
||||||
|
datatokenAddress,
|
||||||
|
publishMarketFeeAddress,
|
||||||
|
publishMarketFeeToken,
|
||||||
|
publishMarketFeeAmount,
|
||||||
|
address
|
||||||
|
)
|
||||||
await dtContract.methods
|
await dtContract.methods
|
||||||
.setPublishingMarketFee(
|
.setPublishingMarketFee(
|
||||||
publishMarketFeeAddress,
|
publishMarketFeeAddress,
|
||||||
publishMarketFeeToken,
|
publishMarketFeeToken,
|
||||||
publishMarketFeeAmount
|
publishMarketFeeAmount
|
||||||
)
|
)
|
||||||
.call()
|
.send({
|
||||||
|
from: address,
|
||||||
|
gas: estGas + 1,
|
||||||
|
gasPrice: await getFairGasPrice(this.web3, this.config)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1410,13 +1457,11 @@ export class Datatoken {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const publishingMarketFee = await dtContract.methods.getPublishingMarketFee().call()
|
const publishingMarketFee = await dtContract.methods.getPublishingMarketFee().call()
|
||||||
console.log('publishingMarketFee', publishingMarketFee)
|
|
||||||
const returnValues = {
|
const returnValues = {
|
||||||
publishMarketFeeAddress: publishingMarketFee[0],
|
publishMarketFeeAddress: publishingMarketFee[0],
|
||||||
publishMarketFeeToken: publishingMarketFee[1],
|
publishMarketFeeToken: publishingMarketFee[1],
|
||||||
publishMarketFeeAmount: publishingMarketFee[2]
|
publishMarketFeeAmount: publishingMarketFee[2]
|
||||||
}
|
}
|
||||||
console.log('returnValues', returnValues)
|
|
||||||
return returnValues
|
return returnValues
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -556,23 +556,28 @@ describe('Datatoken', () => {
|
|||||||
it('#setPublishingMarketFee - User should not be able to set the Publishing Market Fee', async () => {
|
it('#setPublishingMarketFee - User should not be able to set the Publishing Market Fee', async () => {
|
||||||
const originalPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
const originalPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
||||||
datatokenAddress,
|
datatokenAddress,
|
||||||
user3
|
user1
|
||||||
)
|
)
|
||||||
try {
|
try {
|
||||||
await datatoken.setPublishingMarketFee(
|
await datatoken.setPublishingMarketFee(
|
||||||
datatokenAddress,
|
datatokenAddress,
|
||||||
user3,
|
user1,
|
||||||
contracts.daiAddress,
|
contracts.daiAddress,
|
||||||
web3.utils.toWei('10'),
|
web3.utils.toWei('10'),
|
||||||
user3
|
user1
|
||||||
)
|
)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
assert(e.message === 'ERC20Template: not publishMarketFeeAddress')
|
console.log('Message:', e.message)
|
||||||
|
assert(
|
||||||
|
e.message ===
|
||||||
|
'Returned error: VM Exception while processing transaction: revert ERC20Template: not publishMarketFeeAddress'
|
||||||
|
)
|
||||||
}
|
}
|
||||||
const newPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
const newPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
||||||
datatokenAddress,
|
datatokenAddress,
|
||||||
user3
|
user3
|
||||||
)
|
)
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
newPublishingMarketFee.publishMarketFeeAddress ===
|
newPublishingMarketFee.publishMarketFeeAddress ===
|
||||||
originalPublishingMarketFee.publishMarketFeeAddress
|
originalPublishingMarketFee.publishMarketFeeAddress
|
||||||
@ -587,12 +592,10 @@ describe('Datatoken', () => {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
it('#setPublishingMarketFee - Marketplace fee address should be able to set the Publishing Market Fee', async () => {
|
it('#setPublishingMarketFee - Marketplace fee address should be able to set the Publishing Market Fee', async () => {
|
||||||
console.log('users: ', user1, user2, user3, nftOwner, erc20DeployerUser)
|
|
||||||
const originalPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
const originalPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
||||||
datatokenAddress,
|
datatokenAddress,
|
||||||
user2
|
user2
|
||||||
)
|
)
|
||||||
console.log('originalPublishingMarketFee', originalPublishingMarketFee)
|
|
||||||
try {
|
try {
|
||||||
await datatoken.setPublishingMarketFee(
|
await datatoken.setPublishingMarketFee(
|
||||||
datatokenAddress,
|
datatokenAddress,
|
||||||
@ -602,18 +605,13 @@ describe('Datatoken', () => {
|
|||||||
user2
|
user2
|
||||||
)
|
)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log('Error', e)
|
console.log('Error:', e)
|
||||||
}
|
}
|
||||||
const newPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
const newPublishingMarketFee = await datatoken.getPublishingMarketFee(
|
||||||
datatokenAddress,
|
datatokenAddress,
|
||||||
user2
|
user2
|
||||||
)
|
)
|
||||||
|
|
||||||
console.log('newPublishingMarketFee', newPublishingMarketFee)
|
|
||||||
console.log(newPublishingMarketFee.publishMarketFeeAddress, nftOwner)
|
|
||||||
console.log(newPublishingMarketFee.publishMarketFeeToken, contracts.daiAddress)
|
|
||||||
console.log(newPublishingMarketFee.publishMarketFeeAmount, web3.utils.toWei('10'))
|
|
||||||
|
|
||||||
assert(newPublishingMarketFee !== originalPublishingMarketFee)
|
assert(newPublishingMarketFee !== originalPublishingMarketFee)
|
||||||
assert(newPublishingMarketFee.publishMarketFeeAddress === user2)
|
assert(newPublishingMarketFee.publishMarketFeeAddress === user2)
|
||||||
assert(newPublishingMarketFee.publishMarketFeeAmount === web3.utils.toWei('10'))
|
assert(newPublishingMarketFee.publishMarketFeeAmount === web3.utils.toWei('10'))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user