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