在 MAGNE 測試網部署智慧合約

為開發者提供的指南,說明如何使用 Hardhat 或 Foundry 在 MAGNE L1 及 M Hash L2 測試網部署測試用智慧合約。

1 概覽

僅限測試網 — 本指南僅適用於測試網部署。MAGNE L1 測試網及 M Hash L2 測試網為 EVM 相容環境,供開發者進行實驗。測試網代幣不具貨幣價值。網路參數可能隨測試進展而變動。

  • MAGNE L1 及 M Hash L2 為 EVM 相容網路
  • 支援標準以太坊開發工具
  • 可部署 Solidity 智慧合約進行測試
  • 可在區塊瀏覽器上驗證合約

網路參數

MAGNE L1 測試網

RPC URLhttps://rpc.testnet.magicalhash.com
鏈 ID20250810
代幣符號MHA
瀏覽器https://explorer.testnet.magicalhash.com

M Hash L2 測試網

RPC URLhttps://l2-rpc.testnet.magicalhash.com
鏈 ID20250827
代幣符號MHA
瀏覽器https://l2-explorer.testnet.magicalhash.com

Hardhat 部署

1. 安裝 Hardhat

npm init -y
npm install --save-dev hardhat
npx hardhat init

2. 設定 hardhat.config.js

require("@nomicfoundation/hardhat-ethers");

module.exports = {
  solidity: "0.8.20",
  networks: {
    'magne-l1': {
      url: "https://rpc.testnet.magicalhash.com",
      chainId: 20250810,
    },
    'magne-l2': {
      url: "https://l2-rpc.testnet.magicalhash.com",
      chainId: 20250827,
    },
  },
};

3. 建立 .env 檔案

# 請勿將此檔案提交至版本控制
TESTNET_PRIVATE_KEY=your_test_wallet_private_key
L1_RPC_URL=https://rpc.testnet.magicalhash.com
L2_RPC_URL=https://l2-rpc.testnet.magicalhash.com

安全性

請使用專用測試錢包。切勿使用持有真實資產的錢包。切勿將 .env 檔案或私鑰提交至公開儲存庫。

4. 部署合約

const hre = require("hardhat");

async function main() {
  const HelloMagne = await hre.ethers.getContractFactory("HelloMagne");
  const contract = await HelloMagne.deploy("Hello MAGNE!");
  await contract.deployed();
  console.log("Contract deployed to:", contract.address);
}

main().catch((error) => {
  console.error(error);
  process.exit(1);
});

執行部署:

L1_DEPLOY:
npx hardhat run scripts/deploy.js --network magne-l1

L2_DEPLOY:
npx hardhat run scripts/deploy.js --network magne-l2

Foundry 部署

1. 安裝 Foundry

curl -L https://foundry.paradigm.xyz | bash
foundryup

2. 建立專案

forge init my-magne-contract
cd my-magne-contract

3. 設定環境變數

export TESTNET_PRIVATE_KEY=your_test_wallet_private_key
export L1_RPC_URL=https://rpc.testnet.magicalhash.com
export L2_RPC_URL=https://l2-rpc.testnet.magicalhash.com

4. 建立部署腳本

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "forge-std/Script.sol";
import "../src/HelloMagne.sol";

contract DeployScript is Script {
    function run() external {
        vm.broadcast();
        new HelloMagne("Hello MAGNE!");
    }
}

5. 部署

L1_DEPLOY:
forge script script/Deploy.s.sol:DeployScript --rpc-url $L1_RPC_URL --broadcast --private-key $TESTNET_PRIVATE_KEY

L2_DEPLOY:
forge script script/Deploy.s.sol:DeployScript --rpc-url $L2_RPC_URL --broadcast --private-key $TESTNET_PRIVATE_KEY

安全性

請使用專用測試錢包。切勿在腳本或環境變數中公開私鑰。

範例合約

HelloMagne.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract HelloMagne {
    string public message;

    constructor(string memory initialMessage) {
        message = initialMessage;
    }

    function setMessage(string calldata newMessage) external {
        message = newMessage;
    }
}

此合約僅供測試及教育用途。在正式環境使用前,請務必審查及審計任何合約。

驗證部署

  • 查看瀏覽器:在區塊瀏覽器上查看您的合約地址
  • 讀取合約:呼叫 view 函數以確認部署
  • 寫入函數:以少量代幣測試狀態變更交易
  • 儲存地址:記錄已部署的合約地址以供應用程式使用

疑難排解

RPC 逾時

請檢查您的網路連線。若 RPC 端點正在維護中,請稍後再試。您也可以嘗試另一個測試網 RPC 作為備援。

鏈 ID 不匹配

請確認您輸入的鏈 ID 正確:L1 為 20250810,L2 為 20250827。如有需要,請移除後重新新增網路。

測試網 MHA 不足

請確認您已持有測試網代幣。如需測試網代幣,請聯繫 @MagneAI

部署交易待處理

在高流量期間,測試網交易可能需要更長時間。請在瀏覽器中查看待處理狀態。L2 通常比 L1 更快確認。

編譯器版本不符

請確認您的 Solidity 編譯器版本與合約中的 pragma 相符。請檢查 Hardhat/Foundry 輸出中的警告。

Nonce 過低

請重設錢包的 nonce,或等待待處理交易完成。部分錢包可在設定中重設 nonce。

⚠️ 安全注意事項

請使用專用測試錢包。切勿使用持有真實資產的錢包進行測試網開發。

切勿將私鑰、助記詞或 .env 檔案提交至版本控制或公開儲存庫。

測試網代幣不具貨幣價值。智慧合約範例僅供測試及教育用途。

MAGNE.AI 團隊絕不會要求您提供私鑰或助記詞。