Arc Network
Arc is an open EVM-compatible Layer-1 blockchain designed to serve as the "Economic OS" for the internet. It connects onchain innovation with real-world economic activity, enabling applications in lending, capital markets, FX, and payments. Built for enterprise-grade performance, Arc offers stablecoin-based gas fees (starting with USDC), sub-second finality, optional privacy, and direct integration with Circle’s platform. While validator participation is permissioned for security, the network remains fully open to developers and users.
1. Information
This guide using to deploy your Arc network smart contact
Website: https://arc.network
Twitter: http://x.com/arc
Discord: https://discord.gg/buildonarc
2. Requirement
Recommended Server/VPS:
CPU: 1
RAM: 2GB
Storage: 8GB
Recommended OS:
Ubuntu 22.04
3. Guide to install
3.1. Update
apt update -y && apt upgrade -y && apt install curl wget -y
3.2. Install Foundry
curl -L https://foundry.paradigm.xyz | bash
source /root/.bashrc
foundryup
3.3. Setup your info
FOLDER=arc_contact
YOUR_SLOGAN="Hello, this is my ARC contact"
3.4. Initial
forge init ${FOLDER} && cd ${FOLDER}
sudo tee $HOME/${FOLDER}/.env > /dev/null <<EOF
ARC_TESTNET_RPC_URL="https://rpc.testnet.arc.network"
EOF
rm -rf src/Counter.sol
rm -rf script
3.5. Setup source code
sudo tee $HOME/${FOLDER}/src/HelloArchitect.sol > /dev/null <<EOF
pragma solidity ^0.8.30;
contract HelloArchitect {
string private greeting;
event GreetingChanged(string newGreeting);
constructor() {
greeting = "${YOUR_SLOGAN}!";
}
function setGreeting(string memory newGreeting) public {
greeting = newGreeting;
emit GreetingChanged(newGreeting);
}
function getGreeting() public view returns (string memory) {
return greeting;
}
}
EOF
cd test
rm -rf Counter.t.sol
sudo tee $HOME/${FOLDER}/test/HelloArchitect.t.sol > /dev/null <<EOF
pragma solidity ^0.8.30;
import { Test } from "forge-std/Test.sol";
import { HelloArchitect } from "../src/HelloArchitect.sol";
contract HelloArchitectTest is Test {
HelloArchitect helloArchitect;
function setUp() public {
helloArchitect = new HelloArchitect();
}
function testInitialGreeting() public view {
string memory expected = "${YOUR_SLOGAN}!";
string memory actual = helloArchitect.getGreeting();
assertEq(actual, expected);
}
function testSetGreeting() public {
string memory newGreeting = "Welcome to Arc Chain!";
helloArchitect.setGreeting(newGreeting);
string memory actual = helloArchitect.getGreeting();
assertEq(actual, newGreeting);
}
function testGreetingChangedEvent() public {
string memory newGreeting = "Building on Arc!";
vm.expectEmit(true, true, true, true);
emit HelloArchitect.GreetingChanged(newGreeting);
helloArchitect.setGreeting(newGreeting);
}
}
EOF
forge test
forge build
cd $HOME/${FOLDER}
cast wallet new > $HOME/${FOLDER}/wallet.txt
echo "ADDRESS=\"$(grep '^Address' $HOME/${FOLDER}/wallet.txt | cut -c14-)\"" >> $HOME/${FOLDER}/.env
echo "PRIVATE_KEY=\"$(grep '^Private' $HOME/${FOLDER}/wallet.txt | cut -c14-)\"" >> $HOME/${FOLDER}/.env
source $HOME/${FOLDER}/.env
echo -e "\nYour wallet address is: $(grep '^Address:' wallet.txt | cut -c14-)\nFaucet via https://faucet.circle.com/\n"
3.6. Faucet
Get some token from faucet page at: https://faucet.circle.com
3.7. Deploy contact and test your contact
forge create src/HelloArchitect.sol:HelloArchitect --rpc-url $ARC_TESTNET_RPC_URL --private-key $PRIVATE_KEY --broadcast > $HOME/${FOLDER}/deploy.txt
TRANSACTION_HASH=$(grep '^Transaction' deploy.txt | cut -c19-)
echo -e "\nYour smart contact deploy transaction hash: ${TRANSACTION_HASH}.\nAccess explorer here https://testnet.arcscan.app/tx/${TRANSACTION_HASH}\n"
echo "HELLOARCHITECT_ADDRESS=\"$(grep '^Deployed to' $HOME/${FOLDER}/deploy.txt | cut -c14-)\"" >> $HOME/${FOLDER}/.env
source .env
cast call $HELLOARCHITECT_ADDRESS "getGreeting()(string)" --rpc-url $ARC_TESTNET_RPC_URL
4. Your wallet and contact
Your wallet stored in $HOME/$FOLDER/wallet.txt and your contact info stored in $HOME/$FOLDER/deploy.txt. You can view it anytime you want.
Your wallet info is only stored in your server!