mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
Adding additional comments in the code
This commit is contained in:
parent
0e4df185b1
commit
75e0afa4d9
@ -120,7 +120,7 @@ import { Addresses, deployContracts } from '../TestContractHandler'
|
|||||||
describe('Marketplace flow tests
|
describe('Marketplace flow tests
|
||||||
-->
|
-->
|
||||||
|
|
||||||
Variables and constants needed for the test:
|
Now we define the variables which we will need later
|
||||||
|
|
||||||
```Typescript
|
```Typescript
|
||||||
let config: Config
|
let config: Config
|
||||||
@ -140,7 +140,10 @@ Variables and constants needed for the test:
|
|||||||
let dispenserNftAddress: string
|
let dispenserNftAddress: string
|
||||||
let dispenserDatatokenAddress: string
|
let dispenserDatatokenAddress: string
|
||||||
let dispenserAddress: string
|
let dispenserAddress: string
|
||||||
|
```
|
||||||
|
|
||||||
|
We also define some constants that we will use:
|
||||||
|
```Typescript
|
||||||
const POOL_NFT_NAME = 'Datatoken 1'
|
const POOL_NFT_NAME = 'Datatoken 1'
|
||||||
const POOL_NFT_SYMBOL = 'DT1'
|
const POOL_NFT_SYMBOL = 'DT1'
|
||||||
const FRE_NFT_NAME = 'Datatoken 2'
|
const FRE_NFT_NAME = 'Datatoken 2'
|
||||||
@ -199,7 +202,7 @@ We load the configuration:
|
|||||||
|
|
||||||
console.log(`Aquarius URL: ${config.metadataCacheUri}`)
|
console.log(`Aquarius URL: ${config.metadataCacheUri}`)
|
||||||
console.log(`Provider URL: ${providerUrl}`)
|
console.log(`Provider URL: ${providerUrl}`)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Initialize accounts
|
### Initialize accounts
|
||||||
@ -212,13 +215,13 @@ We load the configuration:
|
|||||||
console.log(`Publisher account address: ${publisherAccount}`)
|
console.log(`Publisher account address: ${publisherAccount}`)
|
||||||
console.log(`Consumer account address: ${consumerAccount}`)
|
console.log(`Consumer account address: ${consumerAccount}`)
|
||||||
console.log(`Staker account address: ${stakerAccount}`)
|
console.log(`Staker account address: ${stakerAccount}`)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Deploy contracts
|
### Next, lets deploy the contracts
|
||||||
```Typescript
|
```Typescript
|
||||||
contracts = await deployContracts(web3, publisherAccount)
|
contracts = await deployContracts(web3, publisherAccount)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### We send some OCEAN to consumer and staker accounts
|
### We send some OCEAN to consumer and staker accounts
|
||||||
@ -235,7 +238,7 @@ We load the configuration:
|
|||||||
await oceanContract.methods
|
await oceanContract.methods
|
||||||
.transfer(stakerAccount, web3.utils.toWei('100'))
|
.transfer(stakerAccount, web3.utils.toWei('100'))
|
||||||
.send({ from: publisherAccount })
|
.send({ from: publisherAccount })
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 4. Publish Data NFT and a Datatoken with a liquidity pool
|
## 4. Publish Data NFT and a Datatoken with a liquidity pool
|
||||||
@ -303,24 +306,29 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
console.log(`Pool NFT address: ${poolNftAddress}`)
|
console.log(`Pool NFT address: ${poolNftAddress}`)
|
||||||
console.log(`Pool Datatoken address: ${poolDatatokenAddress}`)
|
console.log(`Pool Datatoken address: ${poolDatatokenAddress}`)
|
||||||
console.log(`Pool address: ${poolAddress}`)
|
console.log(`Pool address: ${poolAddress}`)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Set metadata in the pool NFT
|
### Set metadata in the pool NFT
|
||||||
```Typescript
|
```Typescript
|
||||||
const nft = new Nft(web3)
|
const nft = new Nft(web3)
|
||||||
|
```
|
||||||
// update ddo and set the right did
|
Now we update the ddo and set the right did
|
||||||
|
```Typescript
|
||||||
DDO.chainId = await web3.eth.getChainId()
|
DDO.chainId = await web3.eth.getChainId()
|
||||||
DDO.id =
|
DDO.id =
|
||||||
'did:op:' +
|
'did:op:' +
|
||||||
SHA256(web3.utils.toChecksumAddress(poolNftAddress) + DDO.chainId.toString(10))
|
SHA256(web3.utils.toChecksumAddress(poolNftAddress) + DDO.chainId.toString(10))
|
||||||
DDO.nftAddress = poolNftAddress
|
DDO.nftAddress = poolNftAddress
|
||||||
// encrypt file(s) using provider
|
```
|
||||||
|
Next we encrypt the file or files using Ocean Provider. The provider is an off chain proxy built specifically for this task
|
||||||
|
```Typescript
|
||||||
const encryptedFiles = await ProviderInstance.encrypt(ASSET_URL, providerUrl)
|
const encryptedFiles = await ProviderInstance.encrypt(ASSET_URL, providerUrl)
|
||||||
DDO.services[0].files = await encryptedFiles
|
DDO.services[0].files = await encryptedFiles
|
||||||
DDO.services[0].datatokenAddress = poolDatatokenAddress
|
DDO.services[0].datatokenAddress = poolDatatokenAddress
|
||||||
|
```
|
||||||
|
Now let's console log the result to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`DID: ${DDO.id}`)
|
console.log(`DID: ${DDO.id}`)
|
||||||
|
|
||||||
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
||||||
@ -336,7 +344,7 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
encryptedDDO,
|
encryptedDDO,
|
||||||
'0x' + metadataHash
|
'0x' + metadataHash
|
||||||
)
|
)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### User should add liquidity to the pool, receiving LP tokens
|
### User should add liquidity to the pool, receiving LP tokens
|
||||||
@ -346,7 +354,7 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
await approve(web3, stakerAccount, contracts.oceanAddress, poolAddress, '5', true)
|
await approve(web3, stakerAccount, contracts.oceanAddress, poolAddress, '5', true)
|
||||||
|
|
||||||
await pool.joinswapExternAmountIn(stakerAccount, poolAddress, '5', '0.1')
|
await pool.joinswapExternAmountIn(stakerAccount, poolAddress, '5', '0.1')
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Marketplace displays pool asset for sale
|
### Marketplace displays pool asset for sale
|
||||||
@ -359,8 +367,11 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
'1',
|
'1',
|
||||||
'0.01'
|
'0.01'
|
||||||
)
|
)
|
||||||
|
```
|
||||||
|
Now let's console log the result to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Price of 1 ${POOL_NFT_SYMBOL} is ${prices.tokenAmount} OCEAN`)
|
console.log(`Price of 1 ${POOL_NFT_SYMBOL} is ${prices.tokenAmount} OCEAN`)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Consumer buys a pool data asset, and downloads it
|
### Consumer buys a pool data asset, and downloads it
|
||||||
@ -368,14 +379,23 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
const datatoken = new Datatoken(web3)
|
const datatoken = new Datatoken(web3)
|
||||||
|
|
||||||
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
||||||
|
```
|
||||||
|
Now let's console log the result to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
||||||
let consumerOCEANBalance = await balance(
|
let consumerOCEANBalance = await balance(
|
||||||
web3,
|
web3,
|
||||||
contracts.oceanAddress,
|
contracts.oceanAddress,
|
||||||
consumerAccount
|
consumerAccount
|
||||||
)
|
)
|
||||||
|
```
|
||||||
|
Now let's console log consumerOCEANBalance to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Consumer OCEAN balance before swap: ${consumerOCEANBalance}`)
|
console.log(`Consumer OCEAN balance before swap: ${consumerOCEANBalance}`)
|
||||||
let consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
let consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
||||||
|
```
|
||||||
|
Now let's console log POOL_NFT_SYMBOL and consumerDTBalance to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Consumer ${POOL_NFT_SYMBOL} balance before swap: ${consumerDTBalance}`)
|
console.log(`Consumer ${POOL_NFT_SYMBOL} balance before swap: ${consumerDTBalance}`)
|
||||||
|
|
||||||
await approve(web3, consumerAccount, contracts.oceanAddress, poolAddress, '100')
|
await approve(web3, consumerAccount, contracts.oceanAddress, poolAddress, '100')
|
||||||
@ -399,8 +419,14 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
)
|
)
|
||||||
|
|
||||||
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
||||||
|
```
|
||||||
|
Now let's console log the Consumer OCEAN balance after swap to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Consumer OCEAN balance after swap: ${consumerOCEANBalance}`)
|
console.log(`Consumer OCEAN balance after swap: ${consumerOCEANBalance}`)
|
||||||
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
||||||
|
```
|
||||||
|
Next let's console log the POOL_NFT_SYMBOL and consumerDTBalance
|
||||||
|
```Typescript
|
||||||
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after swap: ${consumerDTBalance}`)
|
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after swap: ${consumerDTBalance}`)
|
||||||
|
|
||||||
const resolvedDDO = await aquarius.waitForAqua(DDO.id)
|
const resolvedDDO = await aquarius.waitForAqua(DDO.id)
|
||||||
@ -444,11 +470,18 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
web3
|
web3
|
||||||
)
|
)
|
||||||
|
|
||||||
|
```
|
||||||
|
Now let's console log the Download URL to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Download URL: ${downloadURL}`)
|
console.log(`Download URL: ${downloadURL}`)
|
||||||
|
|
||||||
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
||||||
console.log(`Consumer OCEAN balance after order: ${consumerOCEANBalance}`)
|
console.log(`Consumer OCEAN balance after order: ${consumerOCEANBalance}`)
|
||||||
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
||||||
|
|
||||||
|
```
|
||||||
|
Now let's console log the Consumer balance after order to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after order: ${consumerDTBalance}`)
|
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after order: ${consumerDTBalance}`)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -457,7 +490,7 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
assert.fail('Download failed')
|
assert.fail('Download failed')
|
||||||
}
|
}
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 5. Publish Data NFT and a Datatoken with a fixed rate exchange
|
## 5. Publish Data NFT and a Datatoken with a fixed rate exchange
|
||||||
@ -510,11 +543,14 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
freAddress = tx.events.NewFixedRate.returnValues.exchangeContract
|
freAddress = tx.events.NewFixedRate.returnValues.exchangeContract
|
||||||
freId = tx.events.NewFixedRate.returnValues.exchangeId
|
freId = tx.events.NewFixedRate.returnValues.exchangeId
|
||||||
|
|
||||||
|
```
|
||||||
|
Now let's console log each of those values to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`Fixed rate exchange NFT address: ${freNftAddress}`)
|
console.log(`Fixed rate exchange NFT address: ${freNftAddress}`)
|
||||||
console.log(`Fixed rate exchange Datatoken address: ${freDatatokenAddress}`)
|
console.log(`Fixed rate exchange Datatoken address: ${freDatatokenAddress}`)
|
||||||
console.log(`Fixed rate exchange address: ${freAddress}`)
|
console.log(`Fixed rate exchange address: ${freAddress}`)
|
||||||
console.log(`Fixed rate exchange Id: ${freId}`)
|
console.log(`Fixed rate exchange Id: ${freId}`)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Set metadata in the fixed rate exchange NFT
|
### Set metadata in the fixed rate exchange NFT
|
||||||
@ -532,6 +568,9 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
DDO.services[0].files = await encryptedFiles
|
DDO.services[0].files = await encryptedFiles
|
||||||
DDO.services[0].datatokenAddress = freDatatokenAddress
|
DDO.services[0].datatokenAddress = freDatatokenAddress
|
||||||
|
|
||||||
|
```
|
||||||
|
Now let's console log the DID to check everything is working
|
||||||
|
```Typescript
|
||||||
console.log(`DID: ${DDO.id}`)
|
console.log(`DID: ${DDO.id}`)
|
||||||
|
|
||||||
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
||||||
@ -556,8 +595,11 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
const oceanAmount = await (
|
const oceanAmount = await (
|
||||||
await fixedRate.calcBaseInGivenOutDT(freId, '1')
|
await fixedRate.calcBaseInGivenOutDT(freId, '1')
|
||||||
).baseTokenAmount
|
).baseTokenAmount
|
||||||
|
```
|
||||||
|
Now that the market has fetched those values it can display the asset on the front end. In our case we will just console log the results:
|
||||||
|
```Typescript
|
||||||
console.log(`Price of 1 ${FRE_NFT_SYMBOL} is ${oceanAmount} OCEAN`)
|
console.log(`Price of 1 ${FRE_NFT_SYMBOL} is ${oceanAmount} OCEAN`)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Consumer buys a fixed rate asset data asset, and downloads it
|
### Consumer buys a fixed rate asset data asset, and downloads it
|
||||||
@ -568,6 +610,10 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
await datatoken.mint(freDatatokenAddress, publisherAccount, DATATOKEN_AMOUNT)
|
await datatoken.mint(freDatatokenAddress, publisherAccount, DATATOKEN_AMOUNT)
|
||||||
|
|
||||||
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
||||||
|
|
||||||
|
```
|
||||||
|
Let's do a quick check of the consumer ETH balance before the swap
|
||||||
|
```Typescript
|
||||||
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
||||||
let consumerOCEANBalance = await balance(
|
let consumerOCEANBalance = await balance(
|
||||||
web3,
|
web3,
|
||||||
@ -649,7 +695,7 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
assert.fail('Download failed')
|
assert.fail('Download failed')
|
||||||
}
|
}
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 6. Publish Data NFT and a Datatoken with a dispenser
|
## 6. Publish Data NFT and a Datatoken with a dispenser
|
||||||
@ -732,7 +778,7 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
encryptedDDO,
|
encryptedDDO,
|
||||||
'0x' + metadataHash
|
'0x' + metadataHash
|
||||||
)
|
)
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Consumer gets a dispenser data asset, and downloads it
|
### Consumer gets a dispenser data asset, and downloads it
|
||||||
@ -813,6 +859,6 @@ For pool creation, the OCEAN token is used as the base token. The base token can
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
assert.fail('Download failed')
|
assert.fail('Download failed')
|
||||||
}
|
}
|
||||||
})
|
|
||||||
```
|
```
|
||||||
})
|
|
||||||
|
@ -8,6 +8,7 @@ sed -i "s/import { assert } from 'chai'//" CodeExamples.md
|
|||||||
|
|
||||||
# Replace comments
|
# Replace comments
|
||||||
sed -i 's/}) \/\/\/ //' CodeExamples.md
|
sed -i 's/}) \/\/\/ //' CodeExamples.md
|
||||||
|
sed -i 's/}) \/\/\///' CodeExamples.md
|
||||||
sed -i 's/ \/\/\/ //' CodeExamples.md
|
sed -i 's/ \/\/\/ //' CodeExamples.md
|
||||||
sed -i 's/ \/\/\/ //' CodeExamples.md
|
sed -i 's/ \/\/\/ //' CodeExamples.md
|
||||||
sed -i 's/\/\/\/ //' CodeExamples.md
|
sed -i 's/\/\/\/ //' CodeExamples.md
|
||||||
|
@ -120,7 +120,7 @@ import { Addresses, deployContracts } from '../TestContractHandler'
|
|||||||
describe('Marketplace flow tests', async () => {
|
describe('Marketplace flow tests', async () => {
|
||||||
/// -->
|
/// -->
|
||||||
|
|
||||||
/// Variables and constants needed for the test:
|
/// Now we define the variables which we will need later
|
||||||
|
|
||||||
/// ```Typescript
|
/// ```Typescript
|
||||||
let config: Config
|
let config: Config
|
||||||
@ -140,7 +140,10 @@ describe('Marketplace flow tests', async () => {
|
|||||||
let dispenserNftAddress: string
|
let dispenserNftAddress: string
|
||||||
let dispenserDatatokenAddress: string
|
let dispenserDatatokenAddress: string
|
||||||
let dispenserAddress: string
|
let dispenserAddress: string
|
||||||
|
/// ```
|
||||||
|
|
||||||
|
/// We also define some constants that we will use:
|
||||||
|
/// ```Typescript
|
||||||
const POOL_NFT_NAME = 'Datatoken 1'
|
const POOL_NFT_NAME = 'Datatoken 1'
|
||||||
const POOL_NFT_SYMBOL = 'DT1'
|
const POOL_NFT_SYMBOL = 'DT1'
|
||||||
const FRE_NFT_NAME = 'Datatoken 2'
|
const FRE_NFT_NAME = 'Datatoken 2'
|
||||||
@ -199,7 +202,7 @@ describe('Marketplace flow tests', async () => {
|
|||||||
|
|
||||||
console.log(`Aquarius URL: ${config.metadataCacheUri}`)
|
console.log(`Aquarius URL: ${config.metadataCacheUri}`)
|
||||||
console.log(`Provider URL: ${providerUrl}`)
|
console.log(`Provider URL: ${providerUrl}`)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Initialize accounts', async () => {
|
it('Initialize accounts', async () => {
|
||||||
@ -212,13 +215,13 @@ describe('Marketplace flow tests', async () => {
|
|||||||
console.log(`Publisher account address: ${publisherAccount}`)
|
console.log(`Publisher account address: ${publisherAccount}`)
|
||||||
console.log(`Consumer account address: ${consumerAccount}`)
|
console.log(`Consumer account address: ${consumerAccount}`)
|
||||||
console.log(`Staker account address: ${stakerAccount}`)
|
console.log(`Staker account address: ${stakerAccount}`)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Deploy contracts', async () => {
|
it('Next, lets deploy the contracts', async () => {
|
||||||
/// ```Typescript
|
/// ```Typescript
|
||||||
contracts = await deployContracts(web3, publisherAccount)
|
contracts = await deployContracts(web3, publisherAccount)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('We send some OCEAN to consumer and staker accounts', async () => {
|
it('We send some OCEAN to consumer and staker accounts', async () => {
|
||||||
@ -235,7 +238,7 @@ describe('Marketplace flow tests', async () => {
|
|||||||
await oceanContract.methods
|
await oceanContract.methods
|
||||||
.transfer(stakerAccount, web3.utils.toWei('100'))
|
.transfer(stakerAccount, web3.utils.toWei('100'))
|
||||||
.send({ from: publisherAccount })
|
.send({ from: publisherAccount })
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
/// ## 4. Publish Data NFT and a Datatoken with a liquidity pool
|
/// ## 4. Publish Data NFT and a Datatoken with a liquidity pool
|
||||||
@ -303,24 +306,29 @@ describe('Marketplace flow tests', async () => {
|
|||||||
console.log(`Pool NFT address: ${poolNftAddress}`)
|
console.log(`Pool NFT address: ${poolNftAddress}`)
|
||||||
console.log(`Pool Datatoken address: ${poolDatatokenAddress}`)
|
console.log(`Pool Datatoken address: ${poolDatatokenAddress}`)
|
||||||
console.log(`Pool address: ${poolAddress}`)
|
console.log(`Pool address: ${poolAddress}`)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Set metadata in the pool NFT', async () => {
|
it('Set metadata in the pool NFT', async () => {
|
||||||
/// ```Typescript
|
/// ```Typescript
|
||||||
const nft = new Nft(web3)
|
const nft = new Nft(web3)
|
||||||
|
/// ```
|
||||||
// update ddo and set the right did
|
/// Now we update the ddo and set the right did
|
||||||
|
/// ```Typescript
|
||||||
DDO.chainId = await web3.eth.getChainId()
|
DDO.chainId = await web3.eth.getChainId()
|
||||||
DDO.id =
|
DDO.id =
|
||||||
'did:op:' +
|
'did:op:' +
|
||||||
SHA256(web3.utils.toChecksumAddress(poolNftAddress) + DDO.chainId.toString(10))
|
SHA256(web3.utils.toChecksumAddress(poolNftAddress) + DDO.chainId.toString(10))
|
||||||
DDO.nftAddress = poolNftAddress
|
DDO.nftAddress = poolNftAddress
|
||||||
// encrypt file(s) using provider
|
/// ```
|
||||||
|
/// Next we encrypt the file or files using Ocean Provider. The provider is an off chain proxy built specifically for this task
|
||||||
|
/// ```Typescript
|
||||||
const encryptedFiles = await ProviderInstance.encrypt(ASSET_URL, providerUrl)
|
const encryptedFiles = await ProviderInstance.encrypt(ASSET_URL, providerUrl)
|
||||||
DDO.services[0].files = await encryptedFiles
|
DDO.services[0].files = await encryptedFiles
|
||||||
DDO.services[0].datatokenAddress = poolDatatokenAddress
|
DDO.services[0].datatokenAddress = poolDatatokenAddress
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log the result to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`DID: ${DDO.id}`)
|
console.log(`DID: ${DDO.id}`)
|
||||||
|
|
||||||
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
||||||
@ -336,7 +344,7 @@ describe('Marketplace flow tests', async () => {
|
|||||||
encryptedDDO,
|
encryptedDDO,
|
||||||
'0x' + metadataHash
|
'0x' + metadataHash
|
||||||
)
|
)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('User should add liquidity to the pool, receiving LP tokens', async () => {
|
it('User should add liquidity to the pool, receiving LP tokens', async () => {
|
||||||
@ -346,7 +354,7 @@ describe('Marketplace flow tests', async () => {
|
|||||||
await approve(web3, stakerAccount, contracts.oceanAddress, poolAddress, '5', true)
|
await approve(web3, stakerAccount, contracts.oceanAddress, poolAddress, '5', true)
|
||||||
|
|
||||||
await pool.joinswapExternAmountIn(stakerAccount, poolAddress, '5', '0.1')
|
await pool.joinswapExternAmountIn(stakerAccount, poolAddress, '5', '0.1')
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Marketplace displays pool asset for sale', async () => {
|
it('Marketplace displays pool asset for sale', async () => {
|
||||||
@ -359,8 +367,11 @@ describe('Marketplace flow tests', async () => {
|
|||||||
'1',
|
'1',
|
||||||
'0.01'
|
'0.01'
|
||||||
)
|
)
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log the result to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Price of 1 ${POOL_NFT_SYMBOL} is ${prices.tokenAmount} OCEAN`)
|
console.log(`Price of 1 ${POOL_NFT_SYMBOL} is ${prices.tokenAmount} OCEAN`)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Consumer buys a pool data asset, and downloads it', async () => {
|
it('Consumer buys a pool data asset, and downloads it', async () => {
|
||||||
@ -368,14 +379,23 @@ describe('Marketplace flow tests', async () => {
|
|||||||
const datatoken = new Datatoken(web3)
|
const datatoken = new Datatoken(web3)
|
||||||
|
|
||||||
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log the result to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
||||||
let consumerOCEANBalance = await balance(
|
let consumerOCEANBalance = await balance(
|
||||||
web3,
|
web3,
|
||||||
contracts.oceanAddress,
|
contracts.oceanAddress,
|
||||||
consumerAccount
|
consumerAccount
|
||||||
)
|
)
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log consumerOCEANBalance to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Consumer OCEAN balance before swap: ${consumerOCEANBalance}`)
|
console.log(`Consumer OCEAN balance before swap: ${consumerOCEANBalance}`)
|
||||||
let consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
let consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log POOL_NFT_SYMBOL and consumerDTBalance to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Consumer ${POOL_NFT_SYMBOL} balance before swap: ${consumerDTBalance}`)
|
console.log(`Consumer ${POOL_NFT_SYMBOL} balance before swap: ${consumerDTBalance}`)
|
||||||
|
|
||||||
await approve(web3, consumerAccount, contracts.oceanAddress, poolAddress, '100')
|
await approve(web3, consumerAccount, contracts.oceanAddress, poolAddress, '100')
|
||||||
@ -399,8 +419,14 @@ describe('Marketplace flow tests', async () => {
|
|||||||
)
|
)
|
||||||
|
|
||||||
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log the Consumer OCEAN balance after swap to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Consumer OCEAN balance after swap: ${consumerOCEANBalance}`)
|
console.log(`Consumer OCEAN balance after swap: ${consumerOCEANBalance}`)
|
||||||
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
||||||
|
/// ```
|
||||||
|
/// Next let's console log the POOL_NFT_SYMBOL and consumerDTBalance
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after swap: ${consumerDTBalance}`)
|
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after swap: ${consumerDTBalance}`)
|
||||||
|
|
||||||
const resolvedDDO = await aquarius.waitForAqua(DDO.id)
|
const resolvedDDO = await aquarius.waitForAqua(DDO.id)
|
||||||
@ -444,11 +470,18 @@ describe('Marketplace flow tests', async () => {
|
|||||||
web3
|
web3
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log the Download URL to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Download URL: ${downloadURL}`)
|
console.log(`Download URL: ${downloadURL}`)
|
||||||
|
|
||||||
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
consumerOCEANBalance = await balance(web3, contracts.oceanAddress, consumerAccount)
|
||||||
console.log(`Consumer OCEAN balance after order: ${consumerOCEANBalance}`)
|
console.log(`Consumer OCEAN balance after order: ${consumerOCEANBalance}`)
|
||||||
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
consumerDTBalance = await balance(web3, poolDatatokenAddress, consumerAccount)
|
||||||
|
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log the Consumer balance after order to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after order: ${consumerDTBalance}`)
|
console.log(`Consumer ${POOL_NFT_SYMBOL} balance after order: ${consumerDTBalance}`)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -457,7 +490,7 @@ describe('Marketplace flow tests', async () => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
assert.fail('Download failed')
|
assert.fail('Download failed')
|
||||||
}
|
}
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
/// ## 5. Publish Data NFT and a Datatoken with a fixed rate exchange
|
/// ## 5. Publish Data NFT and a Datatoken with a fixed rate exchange
|
||||||
@ -510,11 +543,14 @@ describe('Marketplace flow tests', async () => {
|
|||||||
freAddress = tx.events.NewFixedRate.returnValues.exchangeContract
|
freAddress = tx.events.NewFixedRate.returnValues.exchangeContract
|
||||||
freId = tx.events.NewFixedRate.returnValues.exchangeId
|
freId = tx.events.NewFixedRate.returnValues.exchangeId
|
||||||
|
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log each of those values to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Fixed rate exchange NFT address: ${freNftAddress}`)
|
console.log(`Fixed rate exchange NFT address: ${freNftAddress}`)
|
||||||
console.log(`Fixed rate exchange Datatoken address: ${freDatatokenAddress}`)
|
console.log(`Fixed rate exchange Datatoken address: ${freDatatokenAddress}`)
|
||||||
console.log(`Fixed rate exchange address: ${freAddress}`)
|
console.log(`Fixed rate exchange address: ${freAddress}`)
|
||||||
console.log(`Fixed rate exchange Id: ${freId}`)
|
console.log(`Fixed rate exchange Id: ${freId}`)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Set metadata in the fixed rate exchange NFT', async () => {
|
it('Set metadata in the fixed rate exchange NFT', async () => {
|
||||||
@ -532,6 +568,9 @@ describe('Marketplace flow tests', async () => {
|
|||||||
DDO.services[0].files = await encryptedFiles
|
DDO.services[0].files = await encryptedFiles
|
||||||
DDO.services[0].datatokenAddress = freDatatokenAddress
|
DDO.services[0].datatokenAddress = freDatatokenAddress
|
||||||
|
|
||||||
|
/// ```
|
||||||
|
/// Now let's console log the DID to check everything is working
|
||||||
|
/// ```Typescript
|
||||||
console.log(`DID: ${DDO.id}`)
|
console.log(`DID: ${DDO.id}`)
|
||||||
|
|
||||||
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
const providerResponse = await ProviderInstance.encrypt(DDO, providerUrl)
|
||||||
@ -556,8 +595,11 @@ describe('Marketplace flow tests', async () => {
|
|||||||
const oceanAmount = await (
|
const oceanAmount = await (
|
||||||
await fixedRate.calcBaseInGivenOutDT(freId, '1')
|
await fixedRate.calcBaseInGivenOutDT(freId, '1')
|
||||||
).baseTokenAmount
|
).baseTokenAmount
|
||||||
|
/// ```
|
||||||
|
/// Now that the market has fetched those values it can display the asset on the front end. In our case we will just console log the results:
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Price of 1 ${FRE_NFT_SYMBOL} is ${oceanAmount} OCEAN`)
|
console.log(`Price of 1 ${FRE_NFT_SYMBOL} is ${oceanAmount} OCEAN`)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Consumer buys a fixed rate asset data asset, and downloads it', async () => {
|
it('Consumer buys a fixed rate asset data asset, and downloads it', async () => {
|
||||||
@ -568,6 +610,10 @@ describe('Marketplace flow tests', async () => {
|
|||||||
await datatoken.mint(freDatatokenAddress, publisherAccount, DATATOKEN_AMOUNT)
|
await datatoken.mint(freDatatokenAddress, publisherAccount, DATATOKEN_AMOUNT)
|
||||||
|
|
||||||
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
const consumerETHBalance = await web3.eth.getBalance(consumerAccount)
|
||||||
|
|
||||||
|
/// ```
|
||||||
|
/// Let's do a quick check of the consumer ETH balance before the swap
|
||||||
|
/// ```Typescript
|
||||||
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
console.log(`Consumer ETH balance: ${consumerETHBalance}`)
|
||||||
let consumerOCEANBalance = await balance(
|
let consumerOCEANBalance = await balance(
|
||||||
web3,
|
web3,
|
||||||
@ -649,7 +695,7 @@ describe('Marketplace flow tests', async () => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
assert.fail('Download failed')
|
assert.fail('Download failed')
|
||||||
}
|
}
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
/// ## 6. Publish Data NFT and a Datatoken with a dispenser
|
/// ## 6. Publish Data NFT and a Datatoken with a dispenser
|
||||||
@ -732,7 +778,7 @@ describe('Marketplace flow tests', async () => {
|
|||||||
encryptedDDO,
|
encryptedDDO,
|
||||||
'0x' + metadataHash
|
'0x' + metadataHash
|
||||||
)
|
)
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
it('Consumer gets a dispenser data asset, and downloads it', async () => {
|
it('Consumer gets a dispenser data asset, and downloads it', async () => {
|
||||||
@ -813,6 +859,6 @@ describe('Marketplace flow tests', async () => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
assert.fail('Download failed')
|
assert.fail('Download failed')
|
||||||
}
|
}
|
||||||
})
|
}) ///
|
||||||
/// ```
|
/// ```
|
||||||
})
|
}) ///
|
||||||
|
Loading…
x
Reference in New Issue
Block a user