Skip to content

Commit

Permalink
Revert "add deployed cypress contracts address (#16)"
Browse files Browse the repository at this point in the history
This reverts commit d0b4dc2.
  • Loading branch information
Bayram Guvanjov committed Jun 23, 2023
1 parent d0b4dc2 commit 3d071db
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 90 deletions.
13 changes: 4 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,12 @@

Consumer smart contract that utilizes VRF functionality from [Orakl Network](https://www.orakl.network).

Internally, the scripts access following smart contracts:

Baobab
> Warning: This repository and smart contract are meant to be for deployment on [`Baobab`](https://docs.klaytn.foundation/misc/faq#what-is-cypress-what-is-baobab).
- `Prepayment` ([0xf37a736b476fCEaB261371A3B3B330772630b0bF](https://baobab.klaytnfinder.io/account/0xf37a736b476fCEaB261371A3B3B330772630b0bF))
- `VRFCoordinator` ([0x6B4c0b11bd7fE1E9e9a69297347cFDccA416dF5F](https://baobab.klaytnfinder.io/account/0x6B4c0b11bd7fE1E9e9a69297347cFDccA416dF5F))

Cypress
Internally, the scripts access following smart contracts:

- `Prepayment` ([0xCD54643C2Cd905e31d1ca1bF6617cbA9746F2e37](https://www.klaytnfinder.io/account/0xCD54643C2Cd905e31d1ca1bF6617cbA9746F2e37))
- `VRFCoordinator` ([0xCfB34D7af29E070Ec2fd726e130862F7771217A8](https://www.klaytnfinder.io/account/0xCfB34D7af29E070Ec2fd726e130862F7771217A8))
- `Prepayment` ([0xf37a736b476fCEaB261371A3B3B330772630b0bF](https://baobab.scope.klaytn.com/account/0xf37a736b476fCEaB261371A3B3B330772630b0bF))
- `VRFCoordinator` ([0x6B4c0b11bd7fE1E9e9a69297347cFDccA416dF5F](https://baobab.scope.klaytn.com/account/0x6B4c0b11bd7fE1E9e9a69297347cFDccA416dF5F))

If you want to access different deployments of `Prepayment` or `VRFCoordinator`, you can change it inside `hardhat.config.ts` in `namedAccounts` property.

Expand Down
120 changes: 63 additions & 57 deletions contracts/VRFConsumer.sol
Original file line number Diff line number Diff line change
@@ -1,71 +1,77 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

import {VRFConsumerBase} from "@bisonai/orakl-contracts/src/v0.1/VRFConsumerBase.sol";
import {IVRFCoordinator} from "@bisonai/orakl-contracts/src/v0.1/interfaces/IVRFCoordinator.sol";
import {IPrepayment} from "@bisonai/orakl-contracts/src/v0.1/interfaces/IPrepayment.sol";
import { VRFConsumerBase } from "@bisonai/orakl-contracts/src/v0.1/VRFConsumerBase.sol";
import { IVRFCoordinator } from "@bisonai/orakl-contracts/src/v0.1/interfaces/IVRFCoordinator.sol";

contract VRFConsumer is VRFConsumerBase {
uint256 public sRandomWord;
address private sOwner;
uint256 public sRandomWord;
address private sOwner;

IVRFCoordinator COORDINATOR;
IVRFCoordinator COORDINATOR;

error OnlyOwner(address notOwner);
error OnlyOwner(address notOwner);

modifier onlyOwner() {
if (msg.sender != sOwner) {
revert OnlyOwner(msg.sender);
}
_;
}
modifier onlyOwner() {
if (msg.sender != sOwner) {
revert OnlyOwner(msg.sender);
}
_;
}

constructor(address coordinator) VRFConsumerBase(coordinator) {
sOwner = msg.sender;
COORDINATOR = IVRFCoordinator(coordinator);
}
constructor(address coordinator) VRFConsumerBase(coordinator) {
sOwner = msg.sender;
COORDINATOR = IVRFCoordinator(coordinator);
}

// Receive remaining payment from requestRandomWordsPayment
receive() external payable {}
// Receive remaining payment from requestRandomWordsPayment
receive() external payable {}

function requestRandomWords(
bytes32 keyHash,
uint64 accId,
uint32 callbackGasLimit,
uint32 numWords
) public onlyOwner returns (uint256 requestId) {
requestId = COORDINATOR.requestRandomWords(keyHash, accId, callbackGasLimit, numWords);
}
function requestRandomWords(
bytes32 keyHash,
uint64 accId,
uint32 callbackGasLimit,
uint32 numWords
)
public
onlyOwner
returns (uint256 requestId)
{
requestId = COORDINATOR.requestRandomWords(
keyHash,
accId,
callbackGasLimit,
numWords
);
}

function requestRandomWordsDirect(
bytes32 keyHash,
uint32 callbackGasLimit,
uint32 numWords,
address refundRecipient
) public payable onlyOwner returns (uint256 requestId) {
requestId = COORDINATOR.requestRandomWords{value: msg.value}(
keyHash,
callbackGasLimit,
numWords,
refundRecipient
);
}
function requestRandomWordsDirect(
bytes32 keyHash,
uint32 callbackGasLimit,
uint32 numWords
)
public
payable
onlyOwner
returns (uint256 requestId)
{
requestId = COORDINATOR.requestRandomWords{value: msg.value}(
keyHash,
callbackGasLimit,
numWords,
address(this)
);
}

function fulfillRandomWords(
uint256 /* requestId */,
uint256[] memory randomWords
) internal override {
// requestId should be checked if it matches the expected request
// Generate random value between 1 and 50.
sRandomWord = (randomWords[0] % 50) + 1;
}

function cancelRequest(uint256 requestId) external onlyOwner {
COORDINATOR.cancelRequest(requestId);
}

function withdrawTemporary(uint64 accId) external onlyOwner {
address prepaymentAddress = COORDINATOR.getPrepaymentAddress();
IPrepayment(prepaymentAddress).withdrawTemporary(accId, payable(msg.sender));
}
function fulfillRandomWords(
uint256 /* requestId */,
uint256[] memory randomWords
)
internal
override
{
// requestId should be checked if it matches the expected request
// Generate random value between 1 and 50.
sRandomWord = (randomWords[0] % 50) + 1;
}
}
2 changes: 1 addition & 1 deletion deploy/0-VRFConsumer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {

console.log('0-VRFConsumer.ts')

if (network.name == 'localhost') {
if (network.name != 'baobab') {
console.log('Skipping')
return
}
Expand Down
22 changes: 2 additions & 20 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,10 @@ const config: HardhatUserConfig = {
default: 0
},
prepayment: {
baobab: '0xf37a736b476fCEaB261371A3B3B330772630b0bF',
cypress: '0xCD54643C2Cd905e31d1ca1bF6617cbA9746F2e37'
baobab: '0xf37a736b476fCEaB261371A3B3B330772630b0bF'
},
vrfCoordinator: {
baobab: '0x6B4c0b11bd7fE1E9e9a69297347cFDccA416dF5F',
cypress: '0xCfB34D7af29E070Ec2fd726e130862F7771217A8'
baobab: '0x6B4c0b11bd7fE1E9e9a69297347cFDccA416dF5F'
}
}
}
Expand All @@ -83,22 +81,6 @@ task('createAccount', 'Create new account').setAction(async (taskArgs, hre) => {
console.log(`Account created with ID: ${accId}`)
})

task('cancelAccount', 'Cancel account')
.addParam('to', 'Account address')
.addOptionalParam('accountId', 'Account Id')
.setAction(async (taskArgs, hre) => {
const { prepayment: prepaymentAddress } = await hre.getNamedAccounts()
const prepayment = await ethers.getContractAt(Prepayment__factory.abi, prepaymentAddress)

const accId = taskArgs.accountId || process.env.ACC_ID
const to = taskArgs.amount

const txReceipt = await (await prepayment.cancelAccount(accId, to)).wait()

console.log(txReceipt)
console.log(`Account canceled with ID: ${accId}`)
})

task('deposit', 'Deposit $KLAY to account')
.addParam('amount', 'The amount of $KLAY')
.addOptionalParam('accountId', 'Account Id')
Expand Down
5 changes: 2 additions & 3 deletions scripts/request-vrf-direct.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ethers, getNamedAccounts } from 'hardhat'
import { ethers } from 'hardhat'

async function main() {
const vrfConsumer = await ethers.getContract('VRFConsumer')
Expand All @@ -7,9 +7,8 @@ async function main() {
const callbackGasLimit = 500_000
const numWords = 1

const { deployer } = await getNamedAccounts()
const txReceipt = await (
await vrfConsumer.requestRandomWordsDirect(keyHash, callbackGasLimit, numWords, deployer, {
await vrfConsumer.requestRandomWordsDirect(keyHash, callbackGasLimit, numWords, {
value: ethers.utils.parseEther('1.0')
})
).wait()
Expand Down

0 comments on commit 3d071db

Please sign in to comment.