# 怎么用Solidity语言通过以太坊钱包开发Hello World ## 引言 在区块链开发领域,Solidity是最流行的智能合约编程语言之一,主要用于以太坊及其兼容链。本文将手把手教你如何用Solidity编写一个简单的"Hello World"智能合约,并通过以太坊钱包进行部署和交互。 ## 准备工作 ### 1. 开发环境搭建 需要安装以下工具: - **Node.js** (v16+) - **MetaMask** 浏览器扩展钱包 - **Remix IDE** (在线Solidity IDE) - 或本地开发环境: ```bash npm install -g truffle ganache
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract HelloWorld { string public greeting = "Hello World!"; function setGreeting(string memory _newGreeting) public { greeting = _newGreeting; } function getGreeting() public view returns (string memory) { return greeting; } }
pragma solidity ^0.8.0
- 指定编译器版本string public greeting
- 状态变量自动生成getter函数view
函数 - 只读不消耗gasHelloWorld.sol
// 部署脚本示例(JavaScript) module.exports = async function (deployer) { await deployer.deploy(HelloWorld); };
运行命令:
truffle migrate --network sepolia
greeting
按钮直接查看值setGreeting
输入框输入新值并执行HTML+JavaScript示例:
<!DOCTYPE html> <html> <body> <div id="greeting"></div> <input id="newGreeting" type="text"> <button onclick="updateGreeting()">Update</button> <script src="https://cdn.ethers.io/lib/ethers-5.2.umd.min.js"></script> <script> const contractAddress = "0x..."; const abi = [/* 合约ABI */]; async function loadGreeting() { if (typeof window.ethereum !== 'undefined') { await window.ethereum.request({ method: 'eth_requestAccounts' }); const provider = new ethers.providers.Web3Provider(window.ethereum); const contract = new ethers.Contract(contractAddress, abi, provider); document.getElementById('greeting').innerText = await contract.greeting(); } } async function updateGreeting() { const newGreeting = document.getElementById('newGreeting').value; const provider = new ethers.providers.Web3Provider(window.ethereum); const signer = provider.getSigner(); const contract = new ethers.Contract(contractAddress, abi, signer); await contract.setGreeting(newGreeting); } loadGreeting(); </script> </body> </html>
memory
而非storage
处理临时数据// 添加权限控制 address owner; constructor() { owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _; } function setGreeting(string memory _newGreeting) public onlyOwner { greeting = _newGreeting; }
event GreetingChanged(address indexed sender, string newGreeting); function setGreeting(string memory _newGreeting) public { greeting = _newGreeting; emit GreetingChanged(msg.sender, _newGreeting); }
artifacts/
目录生成JSON文件通过这个简单的Hello World示例,你已经掌握了: 1. Solidity基础语法 2. 智能合约编译部署流程 3. 基本的DApp交互方法
接下来可以尝试: - 开发一个完整的DApp前端 - 学习ERC-20代币标准 - 探索DeFi协议开发
提示:所有代码示例应在测试网操作,主网操作需要真实ETH且不可逆 “`
注:实际字数约1100字,可根据需要增减细节。建议读者在测试网充分练习后再进行主网操作。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。