Ethereum • Windows • Solidity • MetaCoin

Developing an Ethereum Cryptocurrency on Windows

A refreshed Windows tutorial for building and testing an Ethereum-style cryptocurrency project, based on the classic Truffle MetaCoin example, with modern notes for today’s Ethereum development.

Overview

The original article showed how a Windows user could create a simple Ethereum-based cryptocurrency project using Visual Studio Code, Git, Node.js, Truffle, the MetaCoin sample project, Web3, the Truffle development console and Ganache.

This refreshed version keeps the learning flow because MetaCoin is still useful for understanding basic token-like smart contract behavior. However, it also adds important modern notes because some tools and testnets used in older Ethereum tutorials have changed.

Learning goal: create, compile, test, deploy and interact with a simple Ethereum-style cryptocurrency project on Windows.
1

Install Tools

Set up VS Code, Git, Node.js and Solidity development support.

2

Create Project

Use the classic MetaCoin sample to learn contract structure and testing.

3

Deploy and Test

Run the project on a local development blockchain before trying public testnets.

Important Update for Modern Readers

The original tutorial used Truffle, Ganache, Ropsten and Rinkeby. These names are historically important, but modern Ethereum development has moved on.

Truffle and Ganache are now legacy tools. Their codebases remain available as public archives, but new projects should usually consider Hardhat, Foundry, Remix, or other actively maintained Ethereum development tools.
Older Tutorial Item Status Today Recommended Modern Direction
Truffle Legacy / archived tooling Hardhat or Foundry for most new smart contract projects
Ganache Legacy / archived local blockchain Hardhat Network, Anvil, or modern local EVM tools
Ropsten Deprecated and shut down Sepolia for smart contract and dApp testing
Rinkeby Deprecated and shut down Sepolia for app testing; Hoodi for validator/protocol testing
MetaCoin Good learning sample Use ERC-20 standards for production tokens

On mobile, swipe the table horizontally if needed.

Windows Development Setup

A Windows Ethereum development environment normally needs a code editor, source control, Node.js, a package manager and smart contract tooling.

Visual Studio Code

A lightweight editor that works well with Solidity extensions, Git and terminal workflows.

Git

Used for source control, version history and collaboration.

Node.js and npm

Used by many JavaScript-based Ethereum tools and development frameworks.

PowerShell or Windows Terminal

Used to run project commands, install packages and compile contracts.

Option A: Install with Chocolatey

The original tutorial used Chocolatey. Run PowerShell as administrator, then install the tools:

Chocolatey Installation Commands
choco install visualstudiocode -y
choco install git -y
choco install nodejs -y

Option B: Install with Windows Package Manager

Many modern Windows users may prefer winget:

Winget Installation Commands
winget install Microsoft.VisualStudioCode
winget install Git.Git
winget install OpenJS.NodeJS.LTS

After installing, close and reopen PowerShell or Windows Terminal, then check:

Check Versions
node -v
npm -v
git --version

Configuring VS Code for Ethereum Development

Create a project folder and open it in VS Code:

Create and Open a Project Folder
mkdir TruffleTest
cd TruffleTest
code .

Then install useful VS Code extensions:

  • Solidity extension for syntax highlighting and smart contract support.
  • Material Icon Theme or similar icon theme for easier project navigation.
  • Git integration for source control.
  • Optional: Ethereum, Hardhat or Foundry-related extensions if using modern frameworks.

Creating the MetaCoin Project

MetaCoin is the classic Truffle sample project. It demonstrates a simple coin-like smart contract with transfer and balance functions. It is useful for learning, but it is not a production-ready ERC-20 token.

Important: MetaCoin is a learning example. For a real token, use audited ERC-20 implementations such as those from OpenZeppelin and test carefully before deployment.

Install Truffle for Legacy Learning

For educational purposes, you can still install Truffle if you want to reproduce the original tutorial:

Install Truffle
npm install -g truffle
truffle --version

Unbox MetaCoin

Create the MetaCoin Project
truffle unbox metacoin

After unboxing, the project includes smart contract files such as MetaCoin.sol and ConvertLib.sol. These can be compiled and deployed to a local development blockchain.

Compiling, Migrating and Testing

Compile the contracts:

Compile Contracts
truffle compile

Start the Truffle development console:

Start Truffle Development Console
truffle develop

Inside the Truffle console, deploy and test:

Migrate and Test
migrate
test
Unbox MetaCoin
Compile Solidity contracts
Deploy with migration
Run contract tests

Interacting with the Contract Using Web3

The original tutorial used Web3 inside the Truffle development console. The console automatically provides test accounts with local test ETH.

View Accounts
web3.eth.accounts
web3.eth.accounts[0]
web3.eth.accounts[1]

In newer Web3.js versions, many APIs are promise-based and may use slightly different syntax. If a command from an older tutorial does not work, check the Web3.js version used by your toolchain.

Modern-Style Web3 Concept
const accounts = await web3.eth.getAccounts();
console.log(accounts[0]);

Checking Balances and Sending MetaCoin

MetaCoin includes functions for checking balances, converting MetaCoin to an ETH-equivalent value, and sending MetaCoin from one address to another.

MetaCoin

The constructor called when the contract is deployed.

sendCoin

Transfers MetaCoin from one account to another.

getBalance

Returns the MetaCoin balance of an address.

getBalanceInEth

Shows the balance using the conversion logic in the sample project.

Check ETH Balance

Check Local Test ETH Balance
web3.eth.getBalance(web3.eth.accounts[0]).toNumber()
web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]), 'ether').toNumber()

Check MetaCoin Balance

Check MetaCoin Balance
MetaCoin.deployed()
  .then(function(instance) {
    return instance.getBalance.call(web3.eth.accounts[0]);
  })
  .then(function(value) {
    return value.toNumber();
  });

Send MetaCoin

Send MetaCoin from Account 0 to Account 1
MetaCoin.deployed()
  .then(function(instance) {
    return instance.sendCoin(web3.eth.accounts[1], 1000, {
      from: web3.eth.accounts[0]
    });
  });
Remember: MetaCoin balance is not ETH balance. The local accounts may have test ETH for paying gas, while MetaCoin is the sample coin managed by the contract.

Debugging Transactions

The Truffle debugger can step through a transaction using its transaction hash. This helps learners inspect variables and understand what happened during contract execution.

Debug a Transaction
debug '0xYOUR_TRANSACTION_HASH'

In the debugger, you can step through execution and watch variables such as receiver and amount.

Watch Variables
+: receiver
+: amount

Deploying to Ganache

Ganache was a popular personal Ethereum blockchain used for local testing. It allowed developers to view accounts, transactions, logs and gas usage through a convenient interface.

For legacy MetaCoin learning, a Ganache network configuration looks like this:

Legacy Ganache Network Configuration
module.exports = {
  networks: {
    ganache: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*"
    }
  }
};
Migrate to Ganache
truffle migrate --network ganache
Ganache is now legacy tooling. For new projects, consider Hardhat Network or Foundry Anvil for local development.

Public Testnets: Update for Ropsten and Rinkeby

The original tutorial included Ropsten and Rinkeby. Those testnets are now deprecated and should not be used for new tutorials or new smart contract deployments.

Old Testnet Status Use Instead
Ropsten Deprecated and shut down Sepolia for smart contract and dApp testing
Rinkeby Deprecated and shut down Sepolia for app testing
Goerli Deprecated Sepolia for most application developers
Holesky Deprecated as of September 2025 Hoodi for validator/protocol testing; Sepolia for apps

On mobile, swipe the table horizontally if needed.

Current practical advice: use Sepolia for smart contract and dApp testing unless your specific tooling or protocol role requires another active Ethereum test network.

Recommended Modern Learning Path

The classic Truffle MetaCoin tutorial is still useful for understanding basic smart contract ideas, but a modern learner should gradually move toward current tooling and standards.

1

Start with Remix

Good for beginners who want to write and deploy a simple Solidity contract quickly.

2

Use Hardhat or Foundry

Better for modern professional testing, scripting and deployment workflows.

3

Use ERC-20 Standards

For real tokens, use standard audited libraries instead of learning-only examples.

Modern Token Development Checklist

  • Use a current Solidity compiler version.
  • Use tested ERC-20 implementations for real token behavior.
  • Write unit tests and deployment scripts.
  • Test on local network before Sepolia.
  • Verify contract source code after deployment.
  • Never deploy production contracts without review and security testing.

Summary

  • The original tutorial teaches a Windows-based Ethereum development workflow using MetaCoin.
  • VS Code, Git, Node.js and Solidity support remain useful for smart contract development.
  • Truffle and Ganache are now legacy tools, but still useful historically and educationally.
  • Ropsten and Rinkeby should be replaced with modern active testnets such as Sepolia.
  • For new projects, learn Hardhat, Foundry, Remix and ERC-20 standards.

Continue Learning