# Using RNDFusion Hub

Create the interface

```solidity
interface RndFusion {
    function RequestRandomNumber(uint256) external payable;
}
```

Define the interface

```solidity
 RndFusion rndFusion;
```

Define the interface and contract address&#x20;

```solidity
 address rndFusionAddress = 0x748E11Bcabdd0aAf06e9618161061E04F417844A;
```

Set the contract address in the constructor&#x20;

```solidity
 constructor() {
        rndFusion = RndFusion(rndFusionAddress);
    }
```

(OPTIONAL) Create a function to set the address after deployment

```solidity
  function SetRNDAddress(address _address) public {
        //Access controll (only owner should be allowed)
        rndFusionAddress = _address;
        rndFusion = RndFusion(rndFusionAddress);
    }
```

Call the RND fusion contract

```solidity
    rndFusion.RequestRandomNumber{value: msg.value}(requestID);
```

Create a function for the callback

```solidity
 function fulfillRandomWords(uint256 _requestId, uint256 _randomNumber) public {
        require(msg.sender == rndFusionAddress, "Not RNDFusion address");
        //Continue with your code using the request ID and random number
    }
```

**Testnets**

Avalanche Fuji

```solidity
0x748E11Bcabdd0aAf06e9618161061E04F417844A
```

Etheruem Sepolia

```solidity
// Coming soon
```
