Ethereum: Receiving Money in Regtest Mode
As you develop an application that works with a Bitcoin server to retrieve transaction details by transaction ID, it is important to consider using Ethereum for additional functionality. One such use case is receiving money via Regtest mode, which allows you to test and validate your application without exposing your mainnet wallet. Here is an article on how to receive funds in Regtest mode on the Ethereum network.
What is Regression Test Mode?
Regression Test Mode simulates a transaction with the same transaction ID that was used to create it on the mainnet, but without actually sending or receiving the funds. This helps verify that the code behaves correctly and does not introduce bugs that may appear after implementation.
Configuring Ethereum in Regtest Mode
Before continuing, make sure you have Node.js, Geth (Go Ethereum client), and Truffle Suite installed on your computer.
Prerequisites
- Install the required packages:
– npm install @truffle/core
or yarn add truffle-core
– npm install @truffle/compile
or yarn add compile
- Create a new project using
npx truffle init
- Configure the mainnet and Regtest network in the
.env
file.
Configuring the Ethereum network
You will need to update the network configuration in config/contract.json
. Make sure you have the following settings:
{
"network": {
"mainnet": true,
"regtest": false,
"rpc": "
"eth1": {
"rpc": "
},
}
}
Replace YOUR_PROJECT_ID
with your actual Infura project ID.
Creating a contract to receive funds
Create a new file called src/contract/Recipient.sol
. Here is an example contract:
pragma solidity ^0.8.0;
import "
import "
contract Receiver {
using SafeERC20 for (ERC20.IERC20);
ERC20 public payable;
constructor(address _payable) {
payable = ERC20(_payable);
}
function receive() public payable returns (bool) {
return true;
}
}
Testing a contract with Regtest
To test a contract without actually sending or receiving funds, you can use a combination of commands:
- Start a Geth node:
go run --node=127.0.0.1:8545 ./src/contract/Recipient --regtest
- Compile and deploy your smart contract to the Ethereum network.
- Use the Truffle
compile
command to compile and update the contract in your local Regtest environment.
For example:
npx truffle compile
truffle migrate --network=regtest
Receiving funds via Regtest mode
Once you have successfully deployed and updated your smart contract, you can test receiving funds via Regtest mode. Here’s how:
- Start a Geth node with the
--regtest
flag:
go run --node=127.0.0.1:8545 ./src/contract/Recipient --regtest
- Create a new transaction that will call your contract and send the funds:
“`solidity
pragma solidity ^0.8.0;
import “
import “
contract Recipient {
using SafeERC20 for (ERC20.IERC20);
ERC20 public payable;
constructor(address _payable) {
payable = ERC20(_payable);
}
function receive() public payable returns (bool) {
return true;
}
}
pragma solidity ^0.8.0;
import “