# RIF Marketplace Example Setup
Github repository: https://github.com/rsksmart/rif-marketplace-example
The goal of the project is to have a working demonstration of the RIF Marketplace Engine implemented with a front end.
Prerequisites for running locally:
- Docker
- thegraph-cli (https://github.com/graphprotocol/graph-cli)
- Ganache CLI or an RSKj Node.
## Running the project connected to Testnet (Only accesible with the VPN)
1. Go to the `rif-marketplace-example` folder.
2. Ask in the `rif-marketplace-demo` slack channel for the latest .env file and paste it in the root folder.
3. Run `yarn start`
## Setting up a local environment
1. Clone the repositories
- Clone the rif-marketplace-engine repository. (https://github.com/rsksmart/rif-marketplace-engine)
- Clone the graph-node repository. (https://github.com/graphprotocol/graph-node)
2. Start a new Ganache instance by running `ganache-cli` on the terminal.
3. Deploy the RIF Marketplace Engine smart contracts.
- In the rif-marketplace-engine project, go to the hardhat.config.js file and add the ganache network.
```json
networks: {
...
local: {
url: "http://localhost:8545",
},
}
```
- Deploy the smart contracts by running the following command in the root folder:
```
npx hardhat run scripts/deploy.ts --network local
```
- Wait for the script to finish and copy the addresses of the deployed contracts and paste them into the .env file of the rif-marketplace-example project. (If there is no .env file created, copy and paste the .env.sample file and replace the values)
4. Setup the graph-node
- Clone the graph-node repository. (https://github.com/graphprotocol/graph-node)
- Run `docker-compose up` inside the `docker` folder.
5. Deploy the subgraphs.
- Clone the rif-marketplace-example repository. ( https://github.com/rsksmart/rif-marketplace-example)
- Go to the `rif-marketplace-example/mkptsubgraph` folder.
- Replace the contract addresses for the listing manager and the asset wrapper in the `subgraph.yaml` file, and specify the startBlock to 0
```yaml
...
source:
address: "<LISTING_MANAGER_CONTRACT_ADDRESS>"
abi: AssetWrapper
startBlock: 0
...
source:
address: "<ASSET_WRAPPER_CONTRACT_ADDRESS>"
abi: AssetWrapper
startBlock: 0
```
- Run: `graph codegen`
- Run: `graph build`
- Run: `graph create rif-marketplace-engine --node http://localhost:8020`
- Run: `graph deploy rif-marketplace-engine --ipfs http://localhost:5001 --node https://localhost:8020`
- Copy the graph server URL and paste it into the .env file in the `REACT_APP_GRAPHQL_URL` property.
5. Configure the smart contracts.
- Go to the `rif-marketplace-example` folder.
- In the .env file set the `NETWORK_URL` property to `http://localhost:8545`
- In the .env file set the `ACCOUNT_1` property to the first private key provided by ganache.
- **NOTE If no other account is needed set the `ACCOUNT_2`, `ACCOUNT_3`, `ACCOUNT_4` and `ACCOUNT_5` variables to the same as `ACCOUNT_1`**
- Run `node scripts/getNFT.js` and copy and paste the contract address from the output and paste it in the .env file in the `REACT_APP_NFT_ADDRESS` property.
- Run `node scripts/getRIF.js` and copy and paste the contract address from the output and paste it in the .env file in the `REACT_APP_RIF_ADDRESS` property.
- Run `node scripts/configuration.js`
6. Start the front end
- Go to the `rif-marketplace-example` folder.
- Run `yarn start`
## Metamask configuration
For local environment:
- Network name: Ganache
- New RPC URL: http://localhost:8545
- Chain ID: 1337
- Currency symbol: RBTC
For testnet: **(Only accesible with the VPN)**
- Network name: Marketplace Node
- New RPC URL: https://api.marketplace-example.testnet.rifos.org:4444
- Chain ID: 31
- Currency symbol: TRBTC