在区块链中,加密和解密是非对称的,因此有公钥和私钥一对密钥。公钥负责加密和验证。私钥负责解密和签名。NEAR采用的常见方法是使用公钥作为身份识别,私钥用于签名。Near 使用的是 以“ed25519”开头的密钥,这是快速生成安全加密结果的几种“椭圆曲线”之一。
在Near平台有3种密钥对
1.signer keys,签名者密钥, 又名帐户密钥、访问密钥等
2.validator keys, 验证者密钥
3.node keys,节点密钥
1.签名密钥 signer keys 最广为人知。 它们被所有账户用来签名交易, 比如说用来签名转账或者质押等。通过Near wallet 的用户,会得到他们自己的签名密钥。
目前有2种签名密钥:FullAccess keys 全部权限密钥 和 FunctionCall keys 功能调用密钥.
FullAccess密钥“代表帐户行事”,不受任何限制,比如被NEAR CLI和NEAR Wallet用于为您完成任务。当在一台新机器上用near login第一次登录的时候,就会生成新的密钥对,保存在~/.near-credentials/default 中,以后就可以一直在这台机器上免密登录,进行种种账户操作。 拥有了密钥,就等于拥有了整个账户,所以,请务必保管好自己的密钥。 FunctionCall keys仅限于智能合约的相关操作。账户所有者可以撤销这两种类型的密钥。
账户所有者可以随意创建新密钥和吊销现有密钥。NEAR Wallet还支持通过短信息或助记词进行密钥恢复,这使得将签名者的密钥从一台计算机移动到另一台计算机变得非常方便。
2.validator key 验证者密钥
验证者密钥被验证者节点使用,验证者节点用他们验证区块。当第一次运行nearup run betanet 的时候,只要输入的账户名不为空,就会产生验证者密钥对,保存路径为:
.near/betanet/validator_key.json
验证者密钥是可以改变的。所以当你一不小心重新装了系统或者删除了.near文件,千万不要慌。😄 再次运行 nearup run betanet 又会生成一对新的密钥。但是记得用 near call <ACCOUNT_ID> update_staking_key '{"stake_public_key":"ed25519:Zk6cdWPxmK1H5cy3K3GbyDRUyHz9w8a9Q2Mb7ezKiHW"}' --accountId <OWNER_ID> 升级为新的公钥,否则无法生产区块。
3.node keys,节点密钥 除了平台的核心贡献者之外,网络上没有人会想到节点密钥。节点在内部使用这些密钥来签署与网络中其他节点的低级通信,如发送区块头或完成其他可验证的请求。node keys 也是在nearup run betanet的时候自动生成。它储存在 ~/.near/betanet/node_key.json 。
node key 不需要重置和备份。