﻿---
title: "智能合约"
description: "了解智能合约是什么、区块链节点如何执行它、外部数据与升级权限如何进入系统，以及交互前应核验哪些事项。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 智能合约

> 仅供教育用途，不构成投资建议。智能合约交易可能造成不可逆的损失。

<a id="answer"></a>

## 直接答案

智能合约是部署在区块链或类似分布式执行网络上的程序。它包含代码，并且在许多平台上还包含持久状态。交易或其他合约可以调用其函数；网络节点执行相同规则，并通过网络的验证与共识流程接受由此产生的状态变化。

“智能”不表示程序能够理解意图，“合约”也不会自动使其成为具有法律强制力的协议。这个术语描述的是一种代码：它可以在执行环境所具备的能力与数据范围内强制执行特定条件。

智能合约可以：

- 按照编程条件持有或转移数字资产；
- 记录和更新应用状态；以及
- 与其他合约组合，构建交易所、借贷系统、游戏、治理工具及其他链上应用。

它的可预测性只限于已实现的代码与输入。合约即使完全按代码执行，也可能因缺陷、恶意设计、权限失陷或错误的外部数据而产生不希望出现的结果。

<a id="mechanism"></a>

## 工作原理

典型交互遵循以下步骤：

1. 开发者编写并测试源代码，在平台要求时进行编译，再通过一笔交易部署生成的程序。
2. 部署为程序分配链上标识符或地址，并可能初始化其状态和管理角色。
3. 用户、应用或另一个合约发送调用，其中包含函数选择器、参数，有时还包含资产。
4. 每个验证节点按照相同的虚拟机与协议规则执行调用。如果必要条件不成立，调用可能回滚，但交易费仍可能被收取。
5. 如果调用成功并被网络纳入，产生的状态变化与事件日志就会成为区块链记录的一部分。

执行的确定性只适用于约定执行环境内可用的信息。合约无法自行从互联网获取天气、市场价格或银行付款信息。需要链外事实的应用会使用预言机、签名消息、桥或特权操作员，这会在合约代码之外增加新的信任与故障假设。

已部署的代码并不总是整个系统。有些合约不可变，而代理与治理模式可以把调用转向新逻辑或修改参数。因此，用户除了查看可见的应用界面，还要检查升级密钥、管理员权力、暂停控制、预言机设计和关联的合约。

签署交互前，请核验：

- 通过独立可信来源确认网络与完整合约地址；
- 解码后的函数、参数、资产数量和接收方；
- 调用创建的代币额度或操作员权限；
- 合约是否已验证、可升级、已暂停或由特权账户控制；以及
- 在可行时，用小额测试覆盖预期的进入与退出路径。

<a id="example"></a>

## 示例

设想一个用于数字服务的托管合约。买方存入 1,000 USDC，合约记录买方、卖方、金额和结算条件。如果买方确认交付，合约就把资金释放给卖方。如果条件在 24 小时内没有满足，预设的退款路径就会开放。

除非设计向合约提供相关事实，否则合约并不知道服务是否令人满意。如果批准由买方密钥发出，密钥失陷就可能授权放款。如果由预言机或管理员决定结果，该方就成为信任模型的一部分。访问控制或代币处理中的缺陷也可能破坏预期的托管规则。自动执行减少了部分人工处理，但不会免除对每项依赖的评估。

<a id="risks"></a>

## 风险与控制措施

- **代码缺陷：**重入、错误记账、不安全的外部调用或边界情况可能导致资产丢失或锁定。优先选择精简且经过充分测试的设计，并检查已部署代码，而不要只依赖审计标识。
- **权限与升级风险：**管理员可能暂停系统、替换逻辑、修改费用或转移资产。检查每个角色由谁控制、是否使用时间锁或多签，以及哪些内容可以改变。
- **预言机与集成风险：**正确的代码也可能根据过时、受操纵或单位换算错误的数据行动；代币、桥或其他合约的故障还会通过组合性扩散。
- **交易与授权风险：**恶意界面可能展示错误的地址、函数、接收方或无限额度。解码请求，并把权限限制在所需范围。
- **经济设计风险：**有效交易仍可能触发清算、价格操纵、激励失效或有限流动性挤兑。代码正确不等于经济上有偿付能力。
- **运行风险：**拥堵、链重组、排序器中断或前端不可用，都可能在合约仍已部署时延误操作。
- **不可逆性：**公链交易通常没有拒付机制。如果资金通过错误函数发送或进入恶意合约，可能无法追回。

审计只是关于特定代码版本和范围的证据，并非保证。应核对已部署字节码或已验证源代码是否与受审版本一致，并确认后续升级、依赖或配置变化是否超出审计范围。

<a id="misconceptions"></a>

## 常见误解

- **“代码无需交易就会自动执行。”**大多数状态变更函数需要交易或另一次链上调用；按时间触发的操作可能还需要外部执行者。
- **“代码无法改变。”**不可变合约不能重写自身已部署的字节码，但代理、治理和迁移设计可以改变用户最终访问的逻辑。
- **“代码公开就安全。”**公开有助于审查，却不能证明代码正确、管理者诚实或经济设计稳健。
- **“审计保证安全。”**审查受到时间和范围限制，可能遗漏缺陷，也可能不涵盖运行与经济风险。
- **“交易成功就表示预期操作已发生。”**成功只表示被调用代码没有回滚；用户仍须检查目标地址、解码事件、资产变化和最终权限。

<a id="related"></a>

## 相关主题

- [以太坊](/zh-cn/crypto/ethereum/)
- [以太坊虚拟机](/zh-cn/crypto/evm/)
- [合约审计](/zh-cn/crypto/contract-audit/)
- [预言机](/zh-cn/crypto/oracle/)
- [代理合约](/zh-cn/crypto/proxy-contract/)

<a id="sources"></a>

## 来源

- [区块链技术概述](https://doi.org/10.6028/NIST.IR.8202) - NIST（访问日期：2026-08-21）
- [智能合约简介](https://ethereum.org/developers/docs/smart-contracts/) - Ethereum.org（访问日期：2026-08-21）
- [安全注意事项](https://docs.soliditylang.org/en/latest/security-considerations.html) - Solidity documentation（访问日期：2026-08-21）

Source: https://wiki.fcontext.com/zh-cn/crypto/smart-contract/index.mdx
