/dynamic-NFT

Primary LanguageJavaScriptMIT LicenseMIT

Chainlink Truffle Box

https://www.youtube.com/watch?v=EzZEx0lumr0

Dungeions and Dragons contract: https://rinkeby.etherscan.io/address/0x701b30e05A372B5FA75D4DbC70aa8B64beA3494f

Character on Opensea: https://testnets.opensea.io/assets/0x701b30e05a372b5fa75d4dbc70aa8b64bea3494f/0


Chainlink Truffle logo


Requirements

  • NPM

Installation

  1. Install truffle
npm install truffle -g
  1. Setup repo
mkdir MyChainlinkProject
cd MyChainlinkProject/
  1. Unbox
truffle unbox smartcontractkit/box
  1. Install dependencies by running:
npm install

# OR...

yarn install

Test

npm test

Deploy

For deploying to the kovan network, Truffle will use truffle-hdwallet-provider for your mnemonic and an RPC URL. Set your environment variables $RPC_URL and $MNEMONIC before running:

npm run migrate:kovan

You can also run:

truffle migrate --network kovan --reset

If you want to use truffle commands.

Local Blockchain

⚠️ Without a Chainlink node deployed locally, requests from smart contracts will not be responded to. We recommend you deploy to the Kovan network

If needed, edit the truffle-config.js config file to set the desired network to a different port. It assumes any network is running the RPC port on 8545.

npm run migrate:dev

Helper Scripts

There are 3 helper scripts provided with this box in the scripts directory:

  • fund-contract.js
  • request-data.js
  • read-contract.js

In addition, for working with Chainlink Price Feeds and ChainlinkVRF there are folders respectively.

They can be used by calling them from npx truffle exec, for example:

npx truffle exec scripts/fund-contract.js --network kovan

The CLI will output something similar to the following:

Using network 'kovan'.

Funding contract: 0x972DB80842Fdaf6015d80954949dBE0A1700705E
0xd81fcf7bfaf8660149041c823e843f0b2409137a1809a0319d26db9ceaeef650
Truffle v5.0.25 (core: 5.0.25)
Node v10.16.3

In the request-data.js script, example parameters are provided for you. You can change the oracle address, Job ID, and parameters based on the information available on our documentation.

npx truffle exec scripts/request-data.js --network kovan

This creates a request and will return the transaction ID, for example:

Using network 'kovan'.

Creating request on contract: 0x972DB80842Fdaf6015d80954949dBE0A1700705E
0x828f256109f22087b0804a4d1a5c25e8ce9e5ac4bbc777b5715f5f9e5b181a4b
Truffle v5.0.25 (core: 5.0.25)
Node v10.16.3

After creating a request on a kovan network, you will want to wait 3 blocks for the Chainlink node to respond. Then call the read-contract.js script to read the contract's state.

npx truffle exec scripts/read-contract.js --network kovan

Once the oracle has responded, you will receive a value similar to the one below:

Using network 'kovan'.

21568
Truffle v5.0.25 (core: 5.0.25)
Node v10.16.3

TODO

  • Add tests for ChainlinkVRF
  • Add tests for Chainlink Price Feeds
  • Refactor tests to use this instead of defining contracts with let
  • Use the Chainlink-published mocks for MockV3Aggregator and VRFCoordinatorMock