
Understanding the four Legion Score pillars
What each score represents, how it is calculated, and what it takes to reach the top

Concrete Vaults: the most accessible path to real yield in DeFi
A beginner-friendly introduction to automated DeFi strategies powered by Concrete.

Why Capital Efficiency is the real product in DeFi and how Concrete Vaults engineer it
How managed vault infrastructure replaces APY competition with structured onchain capital allocation

Subscribe to Colliseum

Understanding the four Legion Score pillars
What each score represents, how it is calculated, and what it takes to reach the top

Concrete Vaults: the most accessible path to real yield in DeFi
A beginner-friendly introduction to automated DeFi strategies powered by Concrete.

Why Capital Efficiency is the real product in DeFi and how Concrete Vaults engineer it
How managed vault infrastructure replaces APY competition with structured onchain capital allocation
<100 subscribers
<100 subscribers


My name is Heorhii, and over the past few years I have spent a lot of time moving between different blockchain ecosystems, learning what makes each of them unique. I enjoy taking something that looks complex at first glance and turning it into a clear, simple explanation that helps others start building without fear.
Recently, I have been exploring the Arc Testnet, a network focused on stablecoin-native applications. What I really like about Arc is the straightforward developer experience and the feeling that everything is still being shaped. It is a great moment to join as a builder.
In this guide, I want to show you how to write and deploy a simple smart contract on Arc using Solidity and Foundry. Instead of giving you a dry step-by-step manual, I want this to feel more like I am walking next to you while you set things up.
1) Getting ready. Before touching Arc, we need our tools. Foundry is my personal favorite for Solidity projects because it is fast and pleasant to work with.
Install Foundry:
curl -L https://foundry.paradigm.xyz | bash
Then add the binaries:
Once Foundry is installed, create a new project:
forge init hello-arc && cd hello-arc
That is your starting point.
2) Connecting your project to Arc. To interact with Arc Testnet, we need the RPC URL. Create a .env file in your project directory and include:
ARC_TESTNET_RPC_URL="https://rpc.testnet.arc.network"
Your environment file will hold everything sensitive, so make sure it stays private.
3) Writing the contract. We will create a small contract called HelloArchitect. It stores a greeting and lets you update it. The purpose is not to build something complex but to understand the workflow clearly.
Remove the default template:
rm src/Counter.sol
Then create the file src/HelloArchitect.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
contract HelloArchitect {
string private greeting;
event GreetingChanged(string newGreeting);
constructor() {
greeting = "Hello Architect!";
}
function setGreeting(string memory newGreeting) public {
greeting = newGreeting;
emit GreetingChanged(newGreeting);
}
function getGreeting() public view returns (string memory) {
return greeting;
}
}
Short, simple, and perfectly enough for a first deployment.
4) Making sure everything works. The original template tests will break, so remove the old ones and replace them with tests for your new contract.
Delete the old script folder:
rm -rf script
Create a new test file test/HelloArchitect.t.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
import "forge-std/Test.sol";
import "../src/HelloArchitect.sol";
contract HelloArchitectTest is Test {
HelloArchitect helloArchitect;
function setUp() public {
helloArchitect = new HelloArchitect();
}
function testInitialGreeting() public view {
string memory expected = "Hello Architect!";
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);
}
}
Run the tests:
forge test
And compile:
If everything passes, you are ready to deploy.
5) Deploying on Arc Testnet. You cannot deploy without a wallet, so let us create one first.
5.1) Generate a new wallet:
cast wallet new
Store the private key in your .env:
PRIVATE_KEY="0x..."
Reload your environment:
source .env
5.2) Fund your wallet. Go to Circle’s testnet faucet and request testnet USDC. Arc uses USDC as its gas token, so this will cover your deployment fee.
5.3) Deploy the contract:
forge create src/HelloArchitect.sol:HelloArchitect --rpc-url $ARC_TESTNET_RPC_URL --private-key $PRIVATE_KEY --broadcast
After deployment, you will get your contract address. Add it to .env:
HELLOARCHITECT_ADDRESS="0x..."
6) Interacting with your contract. Let us make sure everything actually exists on-chain.
To read the greeting:
cast call $HELLOARCHITECT_ADDRESS "getGreeting()(string)" \
--rpc-url $ARC_TESTNET_RPC_URL
You should see the stored value printed right in your terminal.
That is it. You have deployed a Solidity contract on Arc Testnet and interacted with it successfully.
Learn more:
https://docs.arc.network/arc/tutorials/deploy-on-arc
Final thoughts. When I started writing this tutorial, my intention was not only to show technical steps. I wanted to give you the feeling that building on a new network does not have to be intimidating. Every chain has its own personality, and Arc is no exception. It feels young, flexible, and open to experimentation.
Deploying a small contract like HelloArchitect may seem like a tiny step, but it is the moment where everything clicks. You see your work live on a real network, and suddenly the ecosystem feels much more accessible.
If you are reading this and taking your first steps into Arc, I hope this guide helped you feel more confident. Keep exploring, keep experimenting, and do not be afraid of breaking things. Testnets exist exactly for that.
And if you ever get stuck or want to build something more advanced, I am always happy to help.
To know more about Arc, join now!
Prepared by Colliseum
My name is Heorhii, and over the past few years I have spent a lot of time moving between different blockchain ecosystems, learning what makes each of them unique. I enjoy taking something that looks complex at first glance and turning it into a clear, simple explanation that helps others start building without fear.
Recently, I have been exploring the Arc Testnet, a network focused on stablecoin-native applications. What I really like about Arc is the straightforward developer experience and the feeling that everything is still being shaped. It is a great moment to join as a builder.
In this guide, I want to show you how to write and deploy a simple smart contract on Arc using Solidity and Foundry. Instead of giving you a dry step-by-step manual, I want this to feel more like I am walking next to you while you set things up.
1) Getting ready. Before touching Arc, we need our tools. Foundry is my personal favorite for Solidity projects because it is fast and pleasant to work with.
Install Foundry:
curl -L https://foundry.paradigm.xyz | bash
Then add the binaries:
Once Foundry is installed, create a new project:
forge init hello-arc && cd hello-arc
That is your starting point.
2) Connecting your project to Arc. To interact with Arc Testnet, we need the RPC URL. Create a .env file in your project directory and include:
ARC_TESTNET_RPC_URL="https://rpc.testnet.arc.network"
Your environment file will hold everything sensitive, so make sure it stays private.
3) Writing the contract. We will create a small contract called HelloArchitect. It stores a greeting and lets you update it. The purpose is not to build something complex but to understand the workflow clearly.
Remove the default template:
rm src/Counter.sol
Then create the file src/HelloArchitect.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
contract HelloArchitect {
string private greeting;
event GreetingChanged(string newGreeting);
constructor() {
greeting = "Hello Architect!";
}
function setGreeting(string memory newGreeting) public {
greeting = newGreeting;
emit GreetingChanged(newGreeting);
}
function getGreeting() public view returns (string memory) {
return greeting;
}
}
Short, simple, and perfectly enough for a first deployment.
4) Making sure everything works. The original template tests will break, so remove the old ones and replace them with tests for your new contract.
Delete the old script folder:
rm -rf script
Create a new test file test/HelloArchitect.t.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
import "forge-std/Test.sol";
import "../src/HelloArchitect.sol";
contract HelloArchitectTest is Test {
HelloArchitect helloArchitect;
function setUp() public {
helloArchitect = new HelloArchitect();
}
function testInitialGreeting() public view {
string memory expected = "Hello Architect!";
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);
}
}
Run the tests:
forge test
And compile:
If everything passes, you are ready to deploy.
5) Deploying on Arc Testnet. You cannot deploy without a wallet, so let us create one first.
5.1) Generate a new wallet:
cast wallet new
Store the private key in your .env:
PRIVATE_KEY="0x..."
Reload your environment:
source .env
5.2) Fund your wallet. Go to Circle’s testnet faucet and request testnet USDC. Arc uses USDC as its gas token, so this will cover your deployment fee.
5.3) Deploy the contract:
forge create src/HelloArchitect.sol:HelloArchitect --rpc-url $ARC_TESTNET_RPC_URL --private-key $PRIVATE_KEY --broadcast
After deployment, you will get your contract address. Add it to .env:
HELLOARCHITECT_ADDRESS="0x..."
6) Interacting with your contract. Let us make sure everything actually exists on-chain.
To read the greeting:
cast call $HELLOARCHITECT_ADDRESS "getGreeting()(string)" \
--rpc-url $ARC_TESTNET_RPC_URL
You should see the stored value printed right in your terminal.
That is it. You have deployed a Solidity contract on Arc Testnet and interacted with it successfully.
Learn more:
https://docs.arc.network/arc/tutorials/deploy-on-arc
Final thoughts. When I started writing this tutorial, my intention was not only to show technical steps. I wanted to give you the feeling that building on a new network does not have to be intimidating. Every chain has its own personality, and Arc is no exception. It feels young, flexible, and open to experimentation.
Deploying a small contract like HelloArchitect may seem like a tiny step, but it is the moment where everything clicks. You see your work live on a real network, and suddenly the ecosystem feels much more accessible.
If you are reading this and taking your first steps into Arc, I hope this guide helped you feel more confident. Keep exploring, keep experimenting, and do not be afraid of breaking things. Testnets exist exactly for that.
And if you ever get stuck or want to build something more advanced, I am always happy to help.
To know more about Arc, join now!
Prepared by Colliseum
Share Dialog
Share Dialog
No activity yet