Files
2025-09-25 04:06:55 +08:00

42 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 智能合约的鉴权、公私密钥
**什么是鉴权?**
在传统中心化系统中,鉴权通常是指验证用户身份的过程,比如通过用户名和密码登录。但在区块链和智能合约中,鉴权的方式完全不同,它依赖于密码学而非用户名
在智能合约中,**鉴权就是验证发起交易的账户是否拥有执行某个特定操作的权限**。这个验证过程通常通过**数字签名**Digital Signature)来实现
当你从一个地址向智能合约发送一笔交易时,这笔交易中包含了你想要执行的函数和参数。为了证明这笔交易确实是你发起的,你需要用你的**私钥**对交易数据进行签名
智能合约或区块链网络会使用与你私钥对应的**公钥**来验证这个签名。如果签名验证成功,系统就会确认这笔交易的合法性,并执行相应的操作
**公私密钥:鉴权的基石**
公私密钥对是区块链鉴权的核心。它基于非对称加密算法(如椭圆曲线加密算法)。
**1. 私钥(Private Key**
- **定义**:一个随机生成的、非常长的数字。它就像你银行账户的密码,是你的**身份唯一凭证**
- **功能**:用于**对交易进行数字签名**。只有私钥持有者才能生成有效的签名
- **安全性**:私钥必须绝对保密。一旦泄露,你的所有资产都可能被盗
- **形象比喻**:你的**银行卡密码**
**2. 公钥(Public Key**
- **定义**:从私钥通过加密算法推导出来的一串数字
- **功能**:用于**验证私钥生成的数字签名**。任何人都可以拥有你的公钥,就像任何人都可以拥有你的银行账户号码。公钥可以公开,因为无法通过公钥反向推导出私钥
- **形象比喻**:你的**银行账户号码**
**3. 地址(Address**
- **定义**:由公钥通过哈希函数派生出来的一串字符
- **功能**:用于接收和发送资产,是你在区块链上的**公开身份**
**工作流程总结:**
1. 你想要调用智能合约中的一个函数(比如提款)
2. 你用**私钥**对交易数据(包括函数名、参数和目标合约地址)进行**签名**
3. 你将签了名的交易广播到区块链网络
4. 网络中的节点接收到交易后,会使用你的**公钥**来**验证签名**
5. 如果签名有效,交易被确认,并被打包进一个区块
6. 智能合约执行你请求的操作