注册
web

web3入门:编写第一个智能合约

1. 引言


Web3 是下一代互联网,它通过区块链技术实现了去中心化。智能合约是 Web3 的核心组件之一,它们是部署在区块链上的自动化程序,可以执行预定义的操作。本学习笔记旨在介绍智能合约的基本概念、开发与部署步骤,并分享一些常见的问题及解决方案。


2. 基础知识


什么是智能合约?


智能合约是一种在区块链上自动执行的程序,具有以下特点:



  • 自动化执行:无需人工干预,合约条件一旦满足,程序自动执行。
  • 不可篡改:部署到区块链上的合约内容无法被篡改。
  • 透明性:所有交易和代码都是公开的,任何人都可以查看。

关键工具



  • Solidity:用于编写智能合约的编程语言。
  • Remix IDE:在线智能合约开发环境。
  • MetaMask:浏览器插件,用于管理以太坊账户并与区块链交互。
  • Ganache:本地区块链模拟器,用于测试和开发。

3. 智能合约开发


编写第一个智能合约


以下是一个简单的 Solidity 智能合约例子:


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

contract HelloWorld {
string public greeting;

constructor() {
greeting = "Hello, World!";
}

function setGreeting(string memory _greeting) public {
greeting = _greeting;
}

function getGreeting() public view returns (string memory) {
return greeting;
}
}

编译合约


使用 Remix IDE 编写和编译上述合约:



  1. 打开 Remix IDE
  2. 新建文件并命名为 HelloWorld.sol
  3. 将上述代码粘贴到文件中。
  4. 选择适当的编译器版本(如 0.8.0),点击编译按钮。

4. 部署环境设置


安装 Node.js 和 npm


sudo apt update
sudo apt install nodejs npm

安装 Truffle 和 Ganache


npm install -g truffle
npm install -g ganache-cli

创建 Truffle 项目


mkdir MySmartContract
cd MySmartContract
truffle init

配置 Truffle


修改 truffle-config.js 文件以使用本地 Ganache 区块链:


module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*"
}
},
compilers: {
solc: {
version: "0.8.0"
}
}
};

复制智能合约 HelloWorld.sol


在项目contracts 文件夹中创建一个新的智能合约文件 HelloWorld.sol,将上面智能合约HelloWorld.sol内容复制过来


5. 部署智能合约


启动本地区块链Ganache


ganache-cli

image.png


image.png


编写迁移脚本


在项目migrations 文件夹中创建一个新的迁移脚本 2_deploy_contracts.js


const HelloWorld = artifacts.require("HelloWorld");

module.exports = function(deployer) {
deployer.deploy(HelloWorld);
};

部署合约


在项目根目录下运行以下命令:


truffle migrate

image.png


6. 互动和验证


连接到已部署的合约


使用 Truffle 控制台与合约互动:


truffle console

在控制台中执行以下命令:


const hello = await HelloWorld.deployed();
let greeting = await hello.getGreeting();
console.log(greeting); // 输出 "Hello, World!"
await hello.setGreeting("Hello, Blockchain!");
greeting = await hello.getGreeting();
console.log(greeting); // 输出 "Hello, Blockchain!"

image.png


7. 常见问题及解决方法


合约部署失败



  • 检查编译器版本:确保 Truffle 配置中的编译器版本与合约代码中使用的版本匹配。
  • 网络设置:确保 Ganache 正在运行且 Truffle 配置中的网络设置正确。

交易被拒绝



  • 账户余额不足:确保用于部署合约的账户有足够的以太币。
  • Gas 限制不足:增加 Gas 限制。

8. 总结


部署 Web3 智能合约需要掌握 Solidity 编程、开发环境设置以及与区块链的交互。通过本学习笔记,您可以了解从编写智能合约到在本地区块链上部署和测试的全过程。随着 Web3 技术的不断发展,掌握这些技能将对未来的区块链应用开发大有裨益。


项目链接地址:github.com/ctq123/web3…


作者:九幽归墟
来源:juejin.cn/post/7399569706183671842

0 个评论

要回复文章请先登录注册