⛏ Witness School · MELEK · PRANA pool
SchoolDevLearnAcademyBuildWhitepaperRunPoolFeesServersWalletHathorLibrary

PRANA contract dev · deploy Solidity to the EVM compute chain

PRANA is an EVM chain — chainId 712217 (0xade19), symbol PRANA, ~13s blocks. Every Ethereum tool works unchanged; you only point it at PRANA's RPC. Add the network, wire your toolchain, and deploy — the addresses and ABIs you'll build against are on Deployed contracts.

1 · Add PRANA to MetaMask

One click (needs a MetaMask-compatible wallet in the browser). It sends the EIP-3085 wallet_addEthereumChain request:

Or copy the params into any wallet:

{
  "chainId": "0xade19",
  "chainName": "PRANA",
  "nativeCurrency": {
    "name": "PRANA",
    "symbol": "PRANA",
    "decimals": 18
  },
  "rpcUrls": [
    "https://rpc.prana.melek.salon"
  ],
  "blockExplorerUrls": [
    "https://pranascan.soapbox.community"
  ]
}

A wallet rejects the add unless the RPC actually reports chainId 0xade19 over HTTPS — that's the EIP-3085 contract, and PRANA's RPC does report it (verified).

2 · Point your toolchain at PRANA

Foundry

# foundry.toml
[rpc_endpoints]
prana = "https://rpc.prana.melek.salon"

# deploy:  forge create src/MyToken.sol:MyToken \
#            --rpc-url prana --private-key $PK --broadcast
# call:    cast call <addr> "totalSupply()(uint256)" --rpc-url https://rpc.prana.melek.salon
# chainId: cast chain-id --rpc-url https://rpc.prana.melek.salon     # → 712217

Hardhat

// hardhat.config.js
module.exports = {
  solidity: '0.8.24',
  networks: {
    prana: {
      url: 'https://rpc.prana.melek.salon',
      chainId: 712217,
      accounts: [process.env.PK],   // deployer private key (env var, never committed)
    },
  },
};
// deploy:  npx hardhat run scripts/deploy.js --network prana

viem

import { createPublicClient, createWalletClient, http, defineChain } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';

export const prana = defineChain({
  id: 712217,
  name: 'PRANA',
  nativeCurrency: { name: 'PRANA', symbol: 'PRANA', decimals: 18 },
  rpcUrls: { default: { http: ['https://rpc.prana.melek.salon'] } },
  blockExplorers: { default: { name: 'PRANAScan', url: 'https://pranascan.soapbox.community' } },
});

const pub = createPublicClient({ chain: prana, transport: http() });
console.log(await pub.getBlockNumber());

ethers v6

import { JsonRpcProvider, Wallet, Contract } from 'ethers';   // ethers v6

const provider = new JsonRpcProvider('https://rpc.prana.melek.salon', 712217);
console.log((await provider.getNetwork()).chainId);   // → 712217n

// read KULA's total supply with a 1-line minimal ABI
const kula = new Contract(
  '0x32255D0138f5D645894FA89b5D5B5a68cF9Aa631',
  ['function totalSupply() view returns (uint256)'],
  provider,
);
console.log(await kula.totalSupply());

3 · Deploy your first contract

A standard OpenZeppelin ERC-20 — a PRC-20 the moment it lands on PRANA (see token standards):

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor() ERC20("My Token", "MYT") {
        _mint(msg.sender, 1_000_000 ether);
    }
}

With Foundry

forge install OpenZeppelin/openzeppelin-contracts
forge create src/MyToken.sol:MyToken \
  --rpc-url https://rpc.prana.melek.salon \
  --private-key $PK --broadcast
# then verify it exists:
cast code <deployed-address> --rpc-url https://rpc.prana.melek.salon

With Hardhat

// scripts/deploy.js
const f = await ethers.getContractFactory('MyToken');
const c = await f.deploy();
await c.waitForDeployment();
console.log('deployed at', await c.getAddress());
// npx hardhat run scripts/deploy.js --network prana

Confirm it on PRANAScan: pranascan.soapbox.community. Contract source verification on the explorer is coming — for now, publish your ABI alongside the address (that's exactly what Deployed contracts does for the core set).

4 · Gas — the faucet

Deploying costs a little PRANA for gas. The ecosystem gas faucet: faucet.alpha.soapbox.community. A dedicated developer faucet (higher limits, dev allowlist) is coming; until then the gas faucet above is the closest drip, and mining PRANA (it's a useful-work chain — see the pool) is the other way to fund a deployer.

Deployed contracts + ABIs → · MELEK app dev → · Token standards (PRC-20) →