Compile and deploy a Solidity contract to chain 2800. The contract itself is ordinary; only the network entry is AERE-specific.
The contract
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract Counter {
uint256 public value;
event Bumped(address indexed by, uint256 to);
function bump() external {
value += 1;
emit Bumped(msg.sender, value);
}
}
With Hardhat
// hardhat.config.js
module.exports = {
solidity: '0.8.24',
networks: {
aere: {
url: 'https://rpc.aere.network',
chainId: 2800,
accounts: [process.env.PRIVATE_KEY],
},
},
};
npx hardhat compile
npx hardhat run scripts/deploy.js --network aere
With Foundry
forge create src/Counter.sol:Counter \
--rpc-url https://rpc.aere.network \
--chain 2800 \
--private-key $PRIVATE_KEY
What to expect
- Deployment lands in the next block, so roughly half a second.
receipt.statusis1and the block is final. There is no reorganisation risk to wait out.- The address is deterministic from your sender and nonce, exactly as on Ethereum.
Solidity version and EVM target
Compile for osaka or any earlier target. Chain 2800 activates Homestead through Osaka plus one AERE milestone which adds the five post-quantum precompiles and EIP-2935 historical block hashes. Nothing in that milestone removes or changes an opcode, so a contract compiled for Osaka, Prague, Cancun or Shanghai behaves the same here as on Ethereum.
If you want your contract to call a post-quantum verifier, it is a plain staticcall to a fixed address. See The five precompiles.