### 智能合约的鉴权、公私密钥

什么是鉴权？

在传统中心化系统中，鉴权通常是指验证用户身份的过程，比如通过用户名和密码登录。但在区块链和智能合约中，鉴权的方式完全不同，它依赖于密码学而非用户名

在智能合约中，鉴权就是验证发起交易的账户是否拥有执行某个特定操作的权限。这个验证过程通常通过数字签名（Digital Signature）来实现

当你从一个地址向智能合约发送一笔交易时，这笔交易中包含了你想要执行的函数和参数。为了证明这笔交易确实是你发起的，你需要用你的私钥对交易数据进行签名

智能合约或区块链网络会使用与你私钥对应的公钥来验证这个签名。如果签名验证成功，系统就会确认这笔交易的合法性，并执行相应的操作

公私密钥：鉴权的基石

公私密钥对是区块链鉴权的核心。它基于非对称加密算法（如椭圆曲线加密算法）。

1. 私钥（Private Key）

- 定义：一个随机生成的、非常长的数字。它就像你银行账户的密码，是你的身份唯一凭证
- 功能：用于对交易进行数字签名。只有私钥持有者才能生成有效的签名
- 安全性：私钥必须绝对保密。一旦泄露，你的所有资产都可能被盗
- 形象比喻：你的银行卡密码

2. 公钥（Public Key）

- 定义：从私钥通过加密算法推导出来的一串数字
- 功能：用于验证私钥生成的数字签名。任何人都可以拥有你的公钥，就像任何人都可以拥有你的银行账户号码。公钥可以公开，因为无法通过公钥反向推导出私钥
- 形象比喻：你的银行账户号码

3. 地址（Address）

- 定义：由公钥通过哈希函数派生出来的一串字符
- 功能：用于接收和发送资产，是你在区块链上的公开身份

工作流程总结：

1. 你想要调用智能合约中的一个函数（比如提款）
2. 你用私钥对交易数据（包括函数名、参数和目标合约地址）进行签名
3. 你将签了名的交易广播到区块链网络
4. 网络中的节点接收到交易后，会使用你的公钥来验证签名
5. 如果签名有效，交易被确认，并被打包进一个区块
6. 智能合约执行你请求的操作