# Tools
# Interaction tools
# MetaMask
On the node access page, click Add to MetaMask.
# Development tools
# Truffle
Configure Truffle Suite (opens new window) to deploy contracts to your Fuse nodes.
Install Truffle Suite (opens new window), HD Wallet-enabled Web3 provider (opens new window), and create a project.
Create a new environment in
truffle-config.js
, add your mnemonic phrase generated by a wallet (opens new window) and the node endpoint:
- Key-protected
- Password-protected
const HDWalletProvider = require("@truffle/hdwallet-provider");
const mnemonic = 'pattern enroll upgrade ...';
...
module.exports = {
networks: {
chainstack: {
provider: () => new HDWalletProvider(mnemonic, "https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d"),
network_id: "*"
},
}
}
};
# Hardhat
Configure Hardhat (opens new window) to deploy contracts and interact through your Fuse nodes.
Install Hardhat (opens new window) and create a project.
Create a new environment in
hardhat.config.js
:
require("@nomiclabs/hardhat-waffle");
...
module.exports = {
solidity: "0.7.3",
networks: {
chainstack: {
url: "ENDPOINT",
accounts: ["PRIVATE_KEY"]
},
}
};
where
- ENDPOINT — your node HTTPS or WSS endpoint.
- PRIVATE_KEY — the private key of the account that you use to deploy the contract.
See also View node access and credentials.
Example:
- Key-protected
- Password-protected
require("@nomiclabs/hardhat-waffle");
...
module.exports = {
solidity: "0.7.3",
networks: {
chainstack: {
url: "https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d",
accounts: ["ee5dda7d38d194783d32adcfc961401108b8fdde27e8fee115553959d434e68b"]
},
}
};
- Run
npx hardhat run scripts/deploy.js --network chainstack
and Hardhat will deploy using Chainstack.
# web3.js
Build DApps using web3.js (opens new window) and Fuse nodes deployed with Chainstack.
# HTTP
- Install web3.js (opens new window).
- Use the
HttpProvider
object to connect to your node HTTPS endpoint.
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider('ENDPOINT'));
where
- ENDPOINT — your node HTTPS endpoint.
Example to get the latest block number:
- Key-protected
- Password-protected
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider('https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d'));
web3.eth.getBlockNumber().then(console.log);
# WebSocket
- Use the
WebsocketProvider
object to connect to your node WSS endpoint.
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.WebsocketProvider('ENDPOINT'));
where
- ENDPOINT — your node WSS endpoint.
Example to get the latest block number:
- Key-protected
- Password-protected
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.WebsocketProvider('wss://ws-nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d'));
web3.eth.getBlockNumber().then(console.log);
# web3.py
Build DApps using web3.py (opens new window) and Fuse nodes deployed with Chainstack.
- Install web3.py (opens new window).
- Connect over HTTP or WebSocket. See also EVM node connection: HTTP vs WebSocket.
# HTTP
Use the HTTPProvider
to connect to your node HTTPS endpoint.
- Key-protected
- Password-protected
from web3 import Web3
web3 = Web3(Web3.HTTPProvider('ENDPOINT'))
where
- ENDPOINT — your node HTTPS endpoint.
- HOSTNAME — your node HTTPS endpoint hostname.
- USERNAME — your node access username.
- PASSWORD — your node access password.
Example to get the latest block number:
- Key-protected
- Password-protected
from web3 import Web3
web3 = Web3(Web3.HTTPProvider('https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d'))
print(web3.eth.blockNumber)
# WebSocket
Use the WebsocketProvider
object to connect to your node WSS endpoint.
- Key-protected
- Password-protected
from web3 import Web3
web3 = Web3(Web3.WebsocketProvider('ENDPOINT'))
where
- ENDPOINT — your node WSS endpoint.
- HOSTNAME — your node WSS endpoint hostname.
- USERNAME — your node access username.
- PASSWORD — your node access password.
Example to get the latest block number:
- Key-protected
- Password-protected
from web3 import Web3
web3 = Web3(Web3.WebsocketProvider('wss://ws-nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d'))
print(web3.eth.blockNumber)
TIP
See also WebSocket connection to an EVM node.
# web3.php
Build DApps using web3.php (opens new window) and Fuse nodes deployed with Chainstack.
- Install web3.php (opens new window).
- Connect over HTTP:
<?php
require_once "vendor/autoload.php";
use Web3\Web3;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;
$web3 = new Web3(new HttpProvider(new HttpRequestManager("ENDPOINT", 5)));
?>
where ENDPOINT is your node HTTPS endpoint.
- Use JSON-RPC methods (opens new window) to interact with the node.
Example to get the latest block number:
- Key-protected
- Password-protected
<?php
require_once "vendor/autoload.php";
use Web3\Web3;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;
$web3 = new Web3(new HttpProvider(new HttpRequestManager("https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d", 5)));
$eth = $web3->eth;
$eth->blockNumber(function ($err, $data) {
print "$data \n";
});
?>
# ethers.js
Build DApps using ethers.js (opens new window) and Fuse nodes deployed with Chainstack.
- Install ethers.js (opens new window).
- Connect over HTTP or WebSocket.
# HTTP
Use the JsonRpcProvider
object to connect to your node HTTPS endpoint.
- Key-protected
- Password-protected
const { ethers } = require("ethers");
var urlInfo = {
url: 'ENDPOINT'
};
var provider = new ethers.providers.JsonRpcProvider(urlInfo, NETWORK_ID);
where
- ENDPOINT — your node HTTPS endpoint.
- USERNAME — your node access username.
- PASSWORD — your node access password.
- NETWORK_ID — Fuse network ID:
- Mainnet:
122
- Spark testnet:
123
- Mainnet:
Example to get the latest block number on mainnet:
- Key-protected
- Password-protected
const { ethers } = require("ethers");
var urlInfo = {
url: 'https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d'
};
var provider = new ethers.providers.JsonRpcProvider(urlInfo, 100);
provider.getBlockNumber().then(console.log);
# WebSocket
Use the WebSocketProvider
object to connect to your node WSS endpoint.
const { ethers } = require("ethers");
const provider = new ethers.providers.WebSocketProvider('ENDPOINT', NETWORK_ID);
where
- ENDPOINT — your node WSS endpoint.
- NETWORK_ID — Fuse network ID:
- Mainnet:
122
- Spark testnet:
123
- Mainnet:
Example to get the latest block number on mainnet:
- Key-protected
- Password-protected
const { ethers } = require("ethers");
const provider = new ethers.providers.WebSocketProvider('wss://ws-nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d', 100);
provider.getBlockNumber().then(console.log);
# Brownie
- Install Brownie (opens new window).
- Use the
brownie networks add
command with the node endpoint:
brownie networks add Fuse ID name="NETWORK_NAME" host=KEY_ENDPOINT chainid=NETWORK_ID
where
- ID — any name that you will use as the network tag to run a deployment. For example,
chainstack-mainnet
. - NETWORK_NAME — any name that you want to identify the network by in the list of networks. For example, Mainnet (Chainstack).
- ENDPOINT — your node HTTPS or WSS endpoint.
- NETWORK_ID — Fuse network ID:
- Mainnet:
122
- Spark testnet:
123
- Mainnet:
Example to add a Fuse mainnet node to the list of Brownie networks:
- Key-protected
- Password-protected
brownie networks add Fuse fuse-mainnet name="Mainnet (Chainstack)" host=https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d chainid=100
Example to run the deployment script:
brownie run deploy.py --network fuse-mainnet
# Foundry
- Install Foundry (opens new window).
- Use
--rpc-url
to run the operation through your Chainstack node.
# Forge
Use forge (opens new window) to develop, test, and deploy your smart contracts.
To deploy a contract:
forge create CONTRACT_NAME --contracts CONTRACT_PATH --private-key PRIVATE_KEY --rpc-url ENDPOINT
where
- CONTRACT_NAME — name of the contract in the Solidity source code.
- CONTRACT_PATH — path to your smart contract.
- PRIVATE_KEY — the private key to your funded account that you will use to deploy the contract.
- ENDPOINT — your node HTTPS endpoint.
Example to deploy the simple storage (opens new window) contract:
- Key-protected
- Password-protected
forge create SimpleStorage --contracts /root/foundry/contracts/simplestorage.sol --private-key 9c4b7f4ad48f977dbcdb2323249fd738cc9ff283a7514f3350d344e22c5b923d --rpc-url https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d
# Cast
Use cast (opens new window) to interact with the network and the deployed contracts.
To get the latest block number:
cast block-number --rpc-url ENDPOINT
where ENDPOINT is your node HTTPS endpoint.
Example:
- Key-protected
- Password-protected
cast block-number --rpc-url https://nd-123-456-789.p2pify.com/3c6e0b8a9c15224a8228b9a98ca1531d