Request-Response Consumer
Consumer smart contract that utilizes Request-Response functionality from Orakl Network.
Internally, the scripts access following smart contracts:
Baobab
Prepayment
(0x8d3A1663d10eEb0bC9C9e537e1BBeA69383194e7)RequestResponseCoordinator
(0x5fe8a7445bFDB2Cd6d9f1DcfB3B33D8c365FFdB0)
Cypress
Prepayment
(0xc2C88492Cf7e5240C3EB49353539E75336960600)RequestResponseCoordinator
(0x159F3BB6609B4C709F15823F3544032942106042)
If you want to access different deployments of Prepayment
or RequestResponseCoordinator
, you can change it inside hardhat.config.ts
in namedAccounts
property.
Prerequisites
Create a copy of .env.example
file and fill in values for PROVIDER
, and MNEMONIC
or PRIV_KEY
(the difference is explained below) environment variables.
These variables will be used for connection to JSON-RPC endpoint, deployment and use of your RequestResponseConsumer
smart contract.
cp .env.example .env
PROVIDER
can be set to any JSON-RPC endpoint.
The list of free available JSON-RPC endpoint can be found in official Klaytn documentation.
This repository supports connection to wallet either through mnemonic or private key.
Mnemonic
MNEMONIC
can be generated using npm mnemonics package.
npx mnemonics
After mnemonic is generated, store it in MNEMONIC
variable inside of .env file.
Now you need to convert it to public address and fund it with KLAY. If you do not have any KLAY in your account, you cannot deploy smart contracts or make any transactions.
You can convert your newly generated mnemonic with following hardhat task.
Please replace the MNENONIC
with your mnemonic and run the command below.
npx hardhat address --mnemonic ${MNEMONIC}
The script will print out a public address corresponding to your mnemonic. Then, you can use this address to receive free KLAY using Baobab's faucet.
Private key
If you already have a wallet, you can reuse its private key, and connect to JSON-RPC endpoint with it.
In case you use Metamask, read how to export an account's private key..
After you extract private key, store it in PRIV_KEY
variable inside of .env
file.
Installation
yarn install
Compilation
yarn compile
Deploy
npx hardhat deploy --network baobab
Get Estimated Service Fee
Prior to creating an account, you have the option to retrieve the estimated service fee for a single Request-Response data request. To do this, you can run the provided script using the following command:
npx hardhat run scripts/get-estimated-service-fee.ts --network baobab
Executing the script will provide you with the cost associated with a single request. This information will help you determine the amount you need to fund your account accordingly to meet your specific requirements.
Create and fund account
There are two types of payments supported by Orakle Network Request-Response: Prepayment and Direct Payment.
Prepayment requires user to create account and fund it with KLAY before being able to use it.
The script below will create a new account and deposit 5
KLAY from address corresponding to your mnemonic from .env
file.
If you prefer to use Orakl Network Request-Response without having a long-lasting account, you can use Direct Payment method. In such case, you can skip the following command and go directly to Request data with Direct Payment.
npx hardhat run scripts/create-and-fund-account.ts --network baobab
After successfully executing the command above, set the value of environment variable ACC_ID
inside of .env
file to account ID that was generated using the script above.
If you do not do it, the Request-Response using Prepayment won't be working properly.
After setting the ACC_ID
in .env
file, you can move to the next step Request data with Prepayment.
Request data & Read response
Before running following scripts, one must deploy RequestResponseConsumer
smart contract.
To deploy RequestResponseConsumer
, run npx hardhat deploy --network baobab
.
Request data with Prepayment
npx hardhat run scripts/request-data.ts --network baobab
Request data with Direct Payment
npx hardhat run scripts/request-data-direct.ts --network baobab
Read response
npx hardhat run scripts/read-response.ts --network baobab
Hardhat Tasks
The following tasks allow for more finer control over experimentation with the example code in this repository.
Create a new account
npx hardhat createAccount --network baobab
Deposit to an account
After you have created an account, you can deposit $KLAY to it anytime using the command below.
npx hardhat deposit \
--account-id $ACCOUNT \
--amount $AMOUNT \
--network $NETWORK
Withdraw from an account
To withdraw the remaining balance from an account, you can use the command below.
npx hardhat withdraw \
--account-id $ACCOUNT \
--amount $AMOUNT \
--network $NETWORK
Add a consumer
Add consumer contract to account. Then, the consumer contract will be able to request for Request-Response service.
npx hardhat addConsumer \
--consumer $CONSUMERADDRESS \
--account-id $ACCOUNT \
--network $NETWORK
Remove a consumer
Remove a consumer contract from an account. Then, the consumer contract will not be able to request for Request-Response service anymore.
npx hardhat removeConsumer \
--consumer ${CONSUMERADDRESS} \
--account-id ${ACCOUNT} \
--network ${NETWORK}