市值: $2.2032T 1.06%
成交额(24h): $37.9282B -32.34%
恐惧与贪婪指数:

36 - 恐惧

  • 市值: $2.2032T 1.06%
  • 成交额(24h): $37.9282B -32.34%
  • 恐惧与贪婪指数:
  • 市值: $2.2032T 1.06%
加密货币
话题
百科
资讯
加密话题
视频
热门加密百科

选择语种

选择语种

选择货币

加密货币
话题
百科
资讯
加密话题
视频

如何用 Solidity 编写你的第一个智能合约? (分步教程)

Set up Node.js, Truffle, and Ganache; write an ERC-20 token using OpenZeppelin; compile, deploy locally, and test via Truffle console and JavaScript.

2026/01/17 00:00

设置开发环境

1. 安装 Node.js 和 npm 以管理 Solidity 工具所需的依赖项。

2. 使用npm在全球范围内安装Truffle——一种广泛采用的基于以太坊的智能合约开发框架。

3、安装Ganache作为个人区块链进行本地测试;它为私人账户提供预先充值的 ETH。

4. 使用truffle init配置一个新的 Truffle 项目以生成基本目录,例如contracts/migrations/test/

5. 通过运行truffle 版本并确认与 Solidity 编译器 v0.8.x 或更高版本的兼容性来验证安装完整性。

编写基本的代币合约

1. 在contracts/文件夹中创建一个名为MyToken.sol的新文件。

2.声明Solidity版本编译指示:编译指示solidity ^0.8.20;以确保确定性的编译行为。

3.导入OpenZeppelin的ERC-20实现: import '@openzeppelin/contracts/token/ERC-20/ERC-20.sol';

4. 定义合约继承:合约MyToken为ERC20 { ... }并在构造函数中初始化名称、符号和总供应量。

5. 使用 OpenZeppelin 的 AccessControl 库中的onlyOwner修饰符添加仅限所有者的 mint 函数。

编译和部署合约

1. 在migrations/2_deploy_contracts.js中编写迁移脚本,实例化并部署100万个代币的MyToken

2.运行trufflecompile生成ABI和字节码;确认没有出现语法或版本不匹配错误。

3. 启动 Ganache 并将其 RPC 服务器 URL(例如,http://127.0.0.1:7545)复制到开发网络下的truffle-config.js中。

4. 执行truffle migrate --networkdevelopment部署合约并记录交易哈希值和合约地址。

5. 通过检查 Ganache 的事务日志并验证控制台输出中出现的合约地址来确认部署成功。

通过 Truffle 控制台进行交互

1. 启动连接到 Ganache 的 Truffle 控制台: truffle console --networkdevelopment

2. 获取已部署的实例: let instance = wait MyToken.deployed();

3. 使用(await instance.totalSupply()).toString()查询总供应量 — 期望输出与初始薄荷值匹配。

4. 账户间转账: await instance.transfer('0xAb8483F64d9C6d1EcF9b849Ae677dC320f55a1B5', '1000')

5. 使用(await instance.balanceOf('0xAb8483F64d9C6d1EcF9b849Ae677dC320f55a1B5')).toString()验证余额更改。

使用 JavaScript 进行测试

1. 创建test/mytoken.js ,其中包含核心功能的 Mocha 风格测试用例。

2. 使用contract()定义测试上下文,并使用it()块来断言铸造、传输和事件发射等行为。

3. 调用transfer 后,使用assert.equal(receipt.logs[0].event, 'Transfer')断言正确的事件日志。

4. 测试恢复条件:尝试传输超过余额的内容,并使用ExpectRevert实用程序验证是否引发恢复

5. 使用truffle test运行测试,并确认所有断言都通过,没有超时或运行时异常。

常见问题解答

问:我可以在不使用 Truffle 的情况下部署 Solidity 合约吗?答:是的。替代方案包括 Hardhat、Remix IDE 或使用编译的字节码和 ABI 直接调用 web3.js。

问:如果我忘记了接收 ETH 的函数中的payable关键字,会发生什么情况?答:该函数将恢复任何尝试发送 ETH 的交易,从而导致执行失败和 Gas 消耗。

问:使用tx.origin进行访问控制安全吗?答:不行。 tx.origin可以通过网络钓鱼合约进行操纵,并且绝不能在权限检查中替换msg.sender

问:如何在 Etherscan 上验证我的合约源代码?答:通过 Etherscan 的验证表单提交准确的 Solidity 源代码、编译器版本、优化设置和构造函数参数。

免责声明:info@kdj.com

所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!

如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。

相关百科

AVAX 期货保证金要求是如何计算的?

AVAX 期货保证金要求是如何计算的?

2026-07-23 15:40:03

AVAX 期货保证金结构1. AVAX期货保证金由两个不同的部分组成:初始保证金和维持保证金。这些是根据当前市场价格、波动性、未平仓合约和合约规模实时计算的。 2. 初始保证金作为履约保证金,以弥补短期(通常是一个交易时段)内潜在的不利价格变动。它以头寸名义价值的百分比表示。 3. 维持保证金设置为...

ADA合约保证金率为何会触发警告?

ADA合约保证金率为何会触发警告?

2026-07-22 09:00:26

ADA 合约保证金比率机制1. 各大交易所的ADA永续合约采用根据持仓规模、杠杆水平和当前标记价格实时计算的动态保证金比例。 2. 保证金比率等于(钱包余额+未实现盈亏)除以维持保证金要求,以百分比表示。 3. 当该比率低于交易所定义的维持阈值(通常为 5% 至 10%,具体取决于杠杆率)时,系统将...

ADAUSDT永续合约资金费率是多少?

ADAUSDT永续合约资金费率是多少?

2026-07-24 20:19:46

ADAUSDT永续合约资金费率定义及目的1. ADAUSDT永续合约资金费率是卡尔达诺(ADA)与主要加密货币交易所Tether(USDT)衍生品头寸之间采用的定期费用兑换机制。 2. 作为价格锚定工具,确保ADAUSDT永续合约价格与基础ADA/USDT现货指数价格保持紧密一致。 3、与传统期货不...

TON 期货强平价格公式是什么?

TON 期货强平价格公式是什么?

2026-07-23 09:19:45

TON 期货强平机制1. 当交易者的保证金余额低于交易所设定的维持保证金要求时,TON 期货就会被清算。 2、保证金比例低于或等于100%时,系统自动触发强制平仓,计算公式为(可用保证金/所需保证金)×100%。 3. 强平价格不是固定的,它会随着市场走势、头寸规模、杠杆水平和资金费率的调整而动态变...

SUI期货杠杆如何影响强平?

SUI期货杠杆如何影响强平?

2026-07-22 09:59:59

SUI 期货保证金机制1、主要衍生品交易所的SUI期货合约根据持仓规模和市场波动情况实行分级初始保证金要求。对于名义价值低于 50,000 美元的头寸,标准初始保证金设置为 8%,而较大头寸则可逐步调整至 15%。 2. 所有合约规模的维持保证金固定为初始保证金水平的 65%,这意味着当净值相对于当...

SUI永续合约的安全保证金比例是多少?

SUI永续合约的安全保证金比例是多少?

2026-07-24 14:00:09

市场波动模式1. 自2023年1月以来,Bitcoin超过68%的交易日在24小时窗口内价格波动超过15%。 2. 当以分钟级回报的标准差来衡量时,以太坊始终表现出比 Solana 或 Cardano 等主要山寨币更高的日内波动性。 3.衍生品市场表现出放大的敏感性——在清算级联期间,币安和Bybi...

AVAX 期货保证金要求是如何计算的?

AVAX 期货保证金要求是如何计算的?

2026-07-23 15:40:03

AVAX 期货保证金结构1. AVAX期货保证金由两个不同的部分组成:初始保证金和维持保证金。这些是根据当前市场价格、波动性、未平仓合约和合约规模实时计算的。 2. 初始保证金作为履约保证金,以弥补短期(通常是一个交易时段)内潜在的不利价格变动。它以头寸名义价值的百分比表示。 3. 维持保证金设置为...

ADA合约保证金率为何会触发警告?

ADA合约保证金率为何会触发警告?

2026-07-22 09:00:26

ADA 合约保证金比率机制1. 各大交易所的ADA永续合约采用根据持仓规模、杠杆水平和当前标记价格实时计算的动态保证金比例。 2. 保证金比率等于(钱包余额+未实现盈亏)除以维持保证金要求,以百分比表示。 3. 当该比率低于交易所定义的维持阈值(通常为 5% 至 10%,具体取决于杠杆率)时,系统将...

ADAUSDT永续合约资金费率是多少?

ADAUSDT永续合约资金费率是多少?

2026-07-24 20:19:46

ADAUSDT永续合约资金费率定义及目的1. ADAUSDT永续合约资金费率是卡尔达诺(ADA)与主要加密货币交易所Tether(USDT)衍生品头寸之间采用的定期费用兑换机制。 2. 作为价格锚定工具,确保ADAUSDT永续合约价格与基础ADA/USDT现货指数价格保持紧密一致。 3、与传统期货不...

TON 期货强平价格公式是什么?

TON 期货强平价格公式是什么?

2026-07-23 09:19:45

TON 期货强平机制1. 当交易者的保证金余额低于交易所设定的维持保证金要求时,TON 期货就会被清算。 2、保证金比例低于或等于100%时,系统自动触发强制平仓,计算公式为(可用保证金/所需保证金)×100%。 3. 强平价格不是固定的,它会随着市场走势、头寸规模、杠杆水平和资金费率的调整而动态变...

SUI期货杠杆如何影响强平?

SUI期货杠杆如何影响强平?

2026-07-22 09:59:59

SUI 期货保证金机制1、主要衍生品交易所的SUI期货合约根据持仓规模和市场波动情况实行分级初始保证金要求。对于名义价值低于 50,000 美元的头寸,标准初始保证金设置为 8%,而较大头寸则可逐步调整至 15%。 2. 所有合约规模的维持保证金固定为初始保证金水平的 65%,这意味着当净值相对于当...

SUI永续合约的安全保证金比例是多少?

SUI永续合约的安全保证金比例是多少?

2026-07-24 14:00:09

市场波动模式1. 自2023年1月以来,Bitcoin超过68%的交易日在24小时窗口内价格波动超过15%。 2. 当以分钟级回报的标准差来衡量时,以太坊始终表现出比 Solana 或 Cardano 等主要山寨币更高的日内波动性。 3.衍生品市场表现出放大的敏感性——在清算级联期间,币安和Bybi...

查看所有文章

User not found or password invalid

Your input is correct