Nextry = Next.js + Foundry
- Foundry build 时自动生成 React 自定义 hook 到 Next.js 目录
- 内置 SIWE 签名登陆实现
Frontend: Next.js 15.1 + Next-Auth v5 + Shadcn + Wagmi/Wagmi cli + Rainbowkit
Solidity: Foundry
首先设置环境变量
cp next/.env.example next/.envcp foundry/.env.example foundry/.env
pnpm run anvil打开本地链pnpm run deploy部署 foundry 合约到本地链,并将abi和address同步给前端pnpm run dev运行 next.js 前端
一定要在 foundry/.env 中添加私钥 DEPLOYER_PRIVATE_KEY 和 ALCHEMY_API_KEY 变量,想要 verify 成功的话,还要有 ETHERSCAN_API_KEY
# https://docs.alchemy.com/docs/alchemy-quickstart-guide#1key-create-an-alchemy-api-key
ALCHEMY_API_KEY=
# https://etherscan.io/myapikey
ETHERSCAN_API_KEY=
DEPLOYER_PRIVATE_KEY=0x
执行
pnpm run deploy:sepolia
verify contract 需要科学网络环境,如果没有成功,可以用类似下边的命令重新验证
forge verify-contract <address> OurToken --chain-id 11155111
首先确保foundry 目录中的 foundry.toml 中有对应的 rpc_endpoints 比如增加熊链
berachainBartio="https://berachain-bartio.g.alchemy.com/v2/${ALCHEMY_API_KEY}"
然后在外部package.json 增加命令如下,--rpc-url 指向 berachainBartio
{
...
"scripts": {
...
"deploy:berachainBartio": "cd ./foundry && forge script script/Deploy.s.sol:DeployScript --rpc-url berachainBartio --broadcast --verify"
},
}进入 foundry 目录
forge install OpenZeppelin/openzeppelin-contracts --no-commit- Add
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/in remappings.txt
forge install smartcontractkit/chainlink-brownie-contracts --no-commit- Add
@chainlink/contracts/=lib/chainlink-brownie-contracts/contracts/src/in remapping.txt
-
Metamask 导入钱包 Anvil 默认账号助记词
test test test test test test test test test test test junk -
给 Metamask 添加 Anvil 网络
网络名称: Anvil RPC URL: http://127.0.0.1:8545 链ID: 31337 货币符号: ETH如遇不能保存,先
pnpm run anvil本地运行 Anvil 链,再保存