1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

update startorder fees and tests

This commit is contained in:
Bogdan Fazakas 2021-12-22 11:05:57 +02:00
parent 8c90f8dec9
commit 722113f176
7 changed files with 267 additions and 39 deletions

138
package-lock.json generated
View File

@ -14,13 +14,14 @@
"cross-fetch": "^3.1.4",
"crypto-js": "^4.0.0",
"decimal.js": "^10.2.1",
"ethereumjs-util": "^7.1.3",
"fs": "0.0.1-security",
"lzma": "^2.3.2",
"node-abort-controller": "^2.0.0",
"save-file": "^2.3.1",
"underscore": "^1.13.1",
"uuid": "^8.3.2",
"web3": "^1.6.1",
"web3": ">=1.3.5",
"web3-core": "^1.6.1",
"web3-eth-contract": "^1.6.1"
},
@ -7130,6 +7131,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@ -7140,6 +7142,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
}
@ -7148,6 +7151,7 @@
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@ -11227,7 +11231,104 @@
"bundleDependencies": [
"source-map-support",
"yargs",
"ethereumjs-util"
"ethereumjs-util",
"@types/bn.js",
"@types/node",
"@types/pbkdf2",
"@types/secp256k1",
"ansi-regex",
"ansi-styles",
"base-x",
"blakejs",
"bn.js",
"brorand",
"browserify-aes",
"bs58",
"bs58check",
"buffer-from",
"buffer-xor",
"camelcase",
"cipher-base",
"cliui",
"color-convert",
"color-name",
"create-hash",
"create-hmac",
"cross-spawn",
"decamelize",
"elliptic",
"emoji-regex",
"end-of-stream",
"ethereum-cryptography",
"ethjs-util",
"evp_bytestokey",
"execa",
"find-up",
"get-caller-file",
"get-stream",
"hash-base",
"hash.js",
"hmac-drbg",
"inherits",
"invert-kv",
"is-fullwidth-code-point",
"is-hex-prefixed",
"is-stream",
"isexe",
"keccak",
"lcid",
"locate-path",
"map-age-cleaner",
"md5.js",
"mem",
"mimic-fn",
"minimalistic-assert",
"minimalistic-crypto-utils",
"nice-try",
"node-addon-api",
"node-gyp-build",
"npm-run-path",
"once",
"os-locale",
"p-defer",
"p-finally",
"p-is-promise",
"p-limit",
"p-locate",
"p-try",
"path-exists",
"path-key",
"pbkdf2",
"pump",
"randombytes",
"readable-stream",
"require-directory",
"require-main-filename",
"ripemd160",
"rlp",
"safe-buffer",
"scrypt-js",
"secp256k1",
"semver",
"set-blocking",
"setimmediate",
"sha.js",
"shebang-command",
"shebang-regex",
"signal-exit",
"source-map",
"string_decoder",
"string-width",
"strip-ansi",
"strip-eof",
"strip-hex-prefix",
"util-deprecate",
"which",
"which-module",
"wrap-ansi",
"wrappy",
"y18n",
"yargs-parser"
],
"dependencies": {
"ethereumjs-util": "6.2.1",
@ -25364,6 +25465,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@ -25380,6 +25482,7 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": {
"node": ">=8"
}
@ -25388,6 +25491,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": {
"color-convert": "^2.0.1"
},
@ -25402,6 +25506,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": {
"color-name": "~1.1.4"
},
@ -25412,12 +25517,14 @@
"node_modules/wrap-ansi/node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": {
"ansi-regex": "^5.0.1"
},
@ -25563,6 +25670,7 @@
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
"engines": {
"node": ">=10"
}
@ -25593,6 +25701,7 @@
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@ -25610,6 +25719,7 @@
"version": "20.2.4",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"dev": true,
"engines": {
"node": ">=10"
}
@ -31109,6 +31219,7 @@
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
"integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
@ -31118,12 +31229,14 @@
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
@ -45334,6 +45447,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
@ -45343,12 +45457,14 @@
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
@ -45357,6 +45473,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
@ -45364,12 +45481,14 @@
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
"ansi-regex": "^5.0.1"
}
@ -45496,7 +45615,8 @@
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yaeti": {
"version": "0.0.6",
@ -45518,6 +45638,7 @@
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
@ -45531,7 +45652,8 @@
"yargs-parser": {
"version": "20.2.4",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA=="
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"dev": true
},
"yargs-unparser": {
"version": "2.0.0",

View File

@ -57,6 +57,7 @@
"cross-fetch": "^3.1.4",
"crypto-js": "^4.0.0",
"decimal.js": "^10.2.1",
"ethereumjs-util": "^7.1.3",
"fs": "0.0.1-security",
"lzma": "^2.3.2",
"node-abort-controller": "^2.0.0",

View File

@ -26,11 +26,14 @@ interface Template {
export interface TokenOrder {
tokenAddress: string
consumer: string
amount: string | number
serviceIndex: number
providerFeeAddress: string
providerFeeToken: string
providerFeeAmount: string
v: number // v of provider signed message
r: string // r of provider signed message
s: string // s of provider signed message
providerDatas: string // data encoded by provider
}
export interface NftCreateData {
@ -553,7 +556,7 @@ export class NftFactory {
if (templateIndex === 0) {
throw new Error(`Template index cannot be ZERO`)
}
if ((await this.getNFTTemplate(templateIndex)).isActive === true) {
if ((await this.getTokenTemplate(templateIndex)).isActive === true) {
throw new Error(`Template is already active`)
}

View File

@ -18,11 +18,14 @@ interface Roles {
export interface OrderParams {
consumer: string
amount: string
serviceIndex: number
providerFeeAddress: string
providerFeeToken: string
providerFeeAmount: string
v: number // v of provider signed message
r: string // r of provider signed message
s: string // s of provider signed message
providerDatas: string // data encoded by provider
}
export interface DispenserParams {
@ -833,11 +836,14 @@ export class Datatoken {
* @param {String} dtAddress Datatoken address
* @param {String} address User address which calls
* @param {String} consumer Consumer Address
* @param {String} amount Amount of tokens that is going to be transfered
* @param {Number} serviceIndex Service index in the metadata
* @param {String} providerFeeAddress Consume marketplace fee address
* @param {String} providerFeeToken address of the token marketplace wants to add fee on top
* @param {String} providerFeeAmount amount of feeToken to be transferred to mpFeeAddress on top, will be converted to WEI
* @param {String} v // v of provider signed message
* @param {String} r // r of provider signed message
* @param {String} s // s of provider signed message
* @param {String} providerData // data encoded by provider
* @param {Contract} contractInstance optional contract instance
* @return {Promise<any>}
*/
@ -845,11 +851,14 @@ export class Datatoken {
dtAddress: string,
address: string,
consumer: string,
amount: string,
serviceIndex: number,
providerFeeAddress: string,
providerFeeToken: string,
providerFeeAmount: string,
v: number,
r: string,
s: string,
providerDatas: string,
contractInstance?: Contract
): Promise<any> {
const dtContract =
@ -862,11 +871,14 @@ export class Datatoken {
estGas = await dtContract.methods
.startOrder(
consumer,
this.web3.utils.toWei(amount),
serviceIndex,
providerFeeAddress,
providerFeeToken,
this.web3.utils.toWei(providerFeeAmount)
this.web3.utils.toWei(providerFeeAmount),
v,
r,
s,
providerDatas
)
.estimateGas({ from: address }, (err, estGas) => (err ? gasLimitDefault : estGas))
} catch (e) {
@ -879,23 +891,28 @@ export class Datatoken {
* @param {String} dtAddress Datatoken address
* @param {String} address User address which calls
* @param {String} consumer Consumer Address
* @param {String} amount Amount of tokens that is going to be transfered
* @param {Number} serviceIndex Service index in the metadata
* @param {String} providerFeeAddress Consume marketplace fee address
* @param {String} providerFeeToken address of the token marketplace wants to add fee on top
* @param {String} providerFeeAmount amount of feeToken to be transferred to mpFeeAddress on top, will be converted to WEI
* @param {String} v // v of provider signed message
* @param {String} r // r of provider signed message
* @param {String} s // s of provider signed message
* @param {String} providerData // data encoded by provider
* @return {Promise<TransactionReceipt>} string
*/
public async startOrder(
dtAddress: string,
address: string,
consumer: string,
amount: string,
serviceIndex: number,
providerFeeAddress: string,
providerFeeToken: string,
providerFeeAmount: string
providerFeeAmount: string,
v: number,
r: string,
s: string,
providerDatas: string
): Promise<TransactionReceipt> {
const dtContract = new this.web3.eth.Contract(this.datatokensAbi, dtAddress)
if (!providerFeeAddress)
@ -906,22 +923,28 @@ export class Datatoken {
dtAddress,
address,
consumer,
amount,
serviceIndex,
providerFeeAddress,
providerFeeToken,
providerFeeAmount,
v,
r,
s,
providerDatas,
dtContract
)
const trxReceipt = await dtContract.methods
.startOrder(
consumer,
this.web3.utils.toWei(amount),
serviceIndex,
providerFeeAddress,
providerFeeToken,
this.web3.utils.toWei(providerFeeAmount)
this.web3.utils.toWei(providerFeeAmount),
v,
r,
s,
providerDatas
)
.send({
from: address,

View File

@ -2,6 +2,7 @@ import { assert, expect } from 'chai'
import { AbiItem } from 'web3-utils/types'
import { TestContractHandler } from '../TestContractHandler'
import Web3 from 'web3'
import { ecsign } from 'ethereumjs-util'
import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json'
import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json'
import SideStaking from '@oceanprotocol/contracts/artifacts/contracts/pools/ssContracts/SideStaking.sol/SideStaking.json'
@ -20,6 +21,13 @@ import {
import { ZERO_ADDRESS } from '../../src/utils'
const web3 = new Web3('http://127.0.0.1:8545')
function signMessage(message, privateKey) {
const { v, r, s } = ecsign(
Buffer.from(message.slice(2), 'hex'),
Buffer.from(privateKey, 'hex')
)
return { v, r, s }
}
describe('Nft Factory test', () => {
let factoryOwner: string
@ -375,24 +383,42 @@ describe('Nft Factory test', () => {
expect(await dtContract.methods.balanceOf(user2).call()).to.equal(dtAmount)
expect(await dtContract2.methods.balanceOf(user2).call()).to.equal(dtAmount)
const providerData = JSON.stringify({ timeout: 0 })
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 },
{ t: 'address', v: '0x0000000000000000000000000000000000000000' },
{ t: 'uint256', v: '1' }
)
const signedMessage = signMessage(
message,
'7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6'
)
console.log('signedMessage', signedMessage)
const orders: TokenOrder[] = [
{
tokenAddress: dtAddress,
consumer: consumer,
amount: dtAmount,
serviceIndex: serviceIndex,
providerFeeAddress: consumeFeeAddress,
providerFeeToken: consumeFeeToken,
providerFeeAmount: consumeFeeAmount
providerFeeAmount: consumeFeeAmount,
v: signedMessage.v,
r: signedMessage.r.toString(),
s: signedMessage.s.toString(),
providerDatas: web3.utils.toHex(web3.utils.asciiToHex(providerData))
},
{
tokenAddress: dtAddress2,
consumer: consumer,
amount: dtAmount,
serviceIndex: serviceIndex,
providerFeeAddress: consumeFeeAddress,
providerFeeToken: consumeFeeToken,
providerFeeAmount: consumeFeeAmount
providerFeeAmount: consumeFeeAmount,
v: signedMessage.v,
r: signedMessage.r.toString(),
s: signedMessage.s.toString(),
providerDatas: web3.utils.toHex(web3.utils.asciiToHex(providerData))
}
]

View File

@ -1,5 +1,6 @@
import { assert } from 'chai'
import Web3 from 'web3'
import { ecsign } from 'ethereumjs-util'
import ERC20TemplateEnterprise from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json'
import PoolTemplate from '@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json'
import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json'
@ -19,6 +20,14 @@ import { FreCreationParams, FreOrderParams } from '../../../src/interfaces'
const web3 = new Web3('http://127.0.0.1:8545')
function signMessage(message, privateKey) {
const { v, r, s } = ecsign(
Buffer.from(message.slice(2), 'hex'),
Buffer.from(privateKey, 'hex')
)
return { v, r, s }
}
describe('Datatoken', () => {
let nftOwner: string
let user1: string
@ -340,15 +349,30 @@ describe('Datatoken', () => {
'User2 does not hold 0 datatokens'
)
const providerData = JSON.stringify({ timeout: 0 })
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 },
{ t: 'address', v: '0x0000000000000000000000000000000000000000' },
{ t: 'uint256', v: '1' }
)
const signedMessage = signMessage(
message,
'7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6'
)
const order = await datatoken.startOrder(
datatokenAddress,
user1,
user2,
'1',
1,
user3,
'0x0000000000000000000000000000000000000000',
'0'
'0',
signedMessage.v,
signedMessage.r.toString(),
signedMessage.s.toString(),
web3.utils.toHex(web3.utils.asciiToHex(providerData))
)
assert(order !== null)
@ -366,13 +390,28 @@ describe('Datatoken', () => {
})
it('#buyFromDispenserAndOrder- Enterprise method', async () => {
const providerData = JSON.stringify({ timeout: 0 })
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 },
{ t: 'address', v: '0x0000000000000000000000000000000000000000' },
{ t: 'uint256', v: '1' }
)
const signedMessage = signMessage(
message,
'7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6'
)
const order: OrderParams = {
consumer: user1,
amount: '1',
serviceIndex: 1,
providerFeeAddress: user1,
providerFeeToken: '0x0000000000000000000000000000000000000000',
providerFeeAmount: '0'
providerFeeAmount: '0',
v: signedMessage.v,
r: signedMessage.r.toString(),
s: signedMessage.s.toString(),
providerDatas: web3.utils.toHex(web3.utils.asciiToHex(providerData))
}
const buyFromDispenseTx = await datatoken.buyFromDispenserAndOrder(
@ -385,13 +424,28 @@ describe('Datatoken', () => {
})
it('#buyFromFreAndOrder - Enterprise method ', async () => {
const providerData = JSON.stringify({ timeout: 0 })
const message = web3.utils.soliditySha3(
{ t: 'bytes', v: web3.utils.toHex(web3.utils.asciiToHex(providerData)) },
{ t: 'address', v: user3 },
{ t: 'address', v: '0x0000000000000000000000000000000000000000' },
{ t: 'uint256', v: '1' }
)
const signedMessage = signMessage(
message,
'7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6'
)
const order: OrderParams = {
consumer: user1,
amount: '1',
serviceIndex: 1,
providerFeeAddress: user1,
providerFeeToken: '0x0000000000000000000000000000000000000000',
providerFeeAmount: '0'
providerFeeAmount: '0',
v: signedMessage.v,
r: signedMessage.r.toString(),
s: signedMessage.s.toString(),
providerDatas: web3.utils.toHex(web3.utils.asciiToHex(providerData))
}
const fre: FreOrderParams = {

View File

@ -13,7 +13,6 @@ import { TestContractHandler } from '../../TestContractHandler'
import { NftFactory, NftCreateData } from '../../../src/factories/NFTFactory'
import { Nft } from '../../../src/tokens/NFT'
import { AbiItem } from 'web3-utils'
const constants = require('../../helpers/constants')
const web3 = new Web3('http://127.0.0.1:8545')
@ -333,9 +332,9 @@ describe('NFT', () => {
const metaDataDecryptorUrl = 'http://myprovider:8030'
const metaDataDecryptorAddress = '0x123'
const metaDataState = 1
const data = web3.utils.asciiToHex(constants.blob[0])
const dataHash = web3.utils.asciiToHex(constants.blob[0])
const flags = web3.utils.asciiToHex(constants.blob[0])
const data = web3.utils.asciiToHex(user2)
const dataHash = web3.utils.asciiToHex(user2)
const flags = web3.utils.asciiToHex(user2)
assert(
(await nftDatatoken.getNftPermissions(nftAddress, user1)).updateMetadata === true
)
@ -359,9 +358,9 @@ describe('NFT', () => {
const metaDataDecryptorUrl = 'http://myprovider:8030'
const metaDataDecryptorAddress = '0x123'
const metaDataState = 1
const data = web3.utils.asciiToHex(constants.blob[0])
const dataHash = web3.utils.asciiToHex(constants.blob[0])
const flags = web3.utils.asciiToHex(constants.blob[0])
const data = web3.utils.asciiToHex(user2)
const dataHash = web3.utils.asciiToHex(user2)
const flags = web3.utils.asciiToHex(user2)
assert(
(await nftDatatoken.getNftPermissions(nftAddress, user3)).updateMetadata === false
)