DeGate
产品功能说明
Search
⌃K
Links

私钥和签名

DeGate协议需要用到两种签名方式
  • ECDSA(椭圆曲线数字签名算法)是DSA(数字签名算法)的椭圆曲线实现。椭圆曲线密码术能够以较小的密钥提供与RSA相对相同的安全级别。了解更多>
  • EdDSA(爱德华兹曲线数字签名算法)是一种使用基于扭曲爱德华兹曲线的Schnorr签名变体的数字签名方案。签名创建在EdDSA中是确定性的,其安全性是基于某些离散对数问题的难处理性,因此它比DSA和ECDSA更安全,后者要求每个签名都具有高质量的随机性。了解更多>

资产私钥

资产私钥是用户通过以太坊钱包私钥签名生成的EdDSA私钥,用于发起DeGate内各种操作请求。用户登录DeGate账户时需要先解锁账户,即派生出资产私钥,临时存放在本地浏览器的session中。
ECDSA和ECDSA签名关系
ECDSA签名需要用户在钱包确认,例如下图MetaMask网页插件。

ECDSA签名类型

DeGate协议支持3种ECDSA的签名和验签方式
  1. 1.
    开放式签名(ETH_Sign)
  2. 2.
    结构化签名(EIP-712):https://eips.ethereum.org/EIPS/eip-712
  3. 3.
    智能合约支持(EIP-1271):https://eips.ethereum.org/EIPS/eip-1271

用户请求与签名

节点同时验证ECDSA签名和EdDSA签名,电路仅验证EdDSA签名,合约仅验证ECDSA签名
操作请求
用户发起的签名类型
验签方
开通账户
ECDSA
节点 -> 合约
重置资产私钥
ECDSA
节点 -> 合约
解锁账户
ECDSA
节点
提现
ECDSA+EdDSA
节点 -> 电路 -> 合约
转账
ECDSA+EdDSA
节点 -> 电路
创建订单
EdDSA
节点
创建网格策略
EdDSA
节点
订单成交
下单时的EdDSA签名
电路
注册交易对
ECDSA+EdDSA
节点 -> 电路
付费入账
1
ECDSA+EdDSA
节点 -> 电路
取消订单
EdDSA
节点
链上取消订单
ECDSA+EdDSA
节点 -> 电路
链上取消网格策略
ECDSA+EdDSA
节点 -> 电路
领取挖矿奖励
ECDSA+EdDSA
节点 -> 电路
1
:付费入账支持通过钱包支付与DeGate账户支付,此处表示后者情况

签名有效期

提交请求的ECDSA和EdDSA签名中都加入了有效期(ValidUntil)字段,验签时,首先判断签名是否在有效期内,才会继续执行。

生成和更新资产私钥

开通账户时要完成两次ECDSA签名,第一次签名后生成资产私钥,签名内容包含了DeGate智能合约地址与KeyNonce。KeyNonce初始为1,之后每次重置账户都会加1,由DeGate节点链下存储。
Sign this message to access DeGate Exchange: 0xdac304791B7f53593C701980aa52087Ed7EC6649 with key nonce: 1
第二次签名会提交AccountUpdate请求,用来关联钱包地址、AccountID、资产私钥对应的公钥,这些数据会通过零知识证明,同时更新到默克尔树,最后提交到智能合约进行验证。
owner: 0x8465f0641187132873Dc204366C125CcCB1f591F
accountID: 13
feeTokenID: 9
maxFee: 224000000000000000
publicKey: 19751969071188309383411147255314514902438722385019108049538486649726264961725
validUntil: 4294967295
nonce: 1
重置资产私钥的过程与开通账户一样,区别在于每次KeyNonce+1。

私钥安全

  1. 1.
    DeGate协议和degate.com不会访问也无法访问用户的以太坊钱包私钥。
  2. 2.
    资产私钥临时保存在本地浏览器SessionStorage,关闭浏览器标签时会自动清除。SessionStorage不支持跨域名和跨Session访问,所以是安全的。
  3. 3.
    DeGate实施了前端安全隔离方案,将前端网站拆分成「前端普通代码」和「前端核心代码」。前端核心代码用于和以太坊钱包互动,调用资产私钥进行签名,并与前端普通代码通信。而前端普通代码只负责站点功能,无法直接访问私钥。未来计划将前端核心代码部署到去中心化的平台服务之上,使其不可更改,进一步提升私钥安全性。
请保护好你的私钥
如果用户的资产私钥遭到泄露,虽然攻击者无法直接提现和转账,但可以在DeGate交易所上用非常低的价格出售用户的资产,并作为交易对手方来获利。
如果你认为资产私钥已经泄露,请立即使用「重置资产私钥」功能,这样已泄露的私钥就会失效。