在多种情况下,您可能拥有帐户ID(这是公共信息)或拥有私有(秘密)密钥(例如,从NEAR Wallet本地存储中提取),并且想要知道相应的公共密钥。 / p>
获得相关公钥的选项有哪些?
答案 0 :(得分:2)
NEAR协议使用EdDSA signature,因此使用ed25519键。具有私钥(私钥),您可以派生相应的公钥(但不能从公钥派生私钥)。大多数实现EdDSA签名的库都允许从秘密密钥派生公共密钥,这是使用near-api-js
的方法:
const nearApi = require('near-api-js')
// NEVER SHARE your private (secret) keys! (The key I used below is not used anywhere)
const keyPair = nearApi.KeyPair.fromString('ed25519:43qKAz3LfCTWpTAZPgA1DGsuwbiAjyosXpDrw24efAGP8Q3TcrnoUzTQHNRF5EbNTR38GRVdsHai9sRnzVu755gU')
console.log(keyPair.getPublicKey().toString())
因此,有了密钥,您总是可以离线获取相应的公共密钥。
如果您没有秘密密钥,将无法签署交易,但是您可能仍想知道属于某个用户的公共密钥,在这种情况下,您可以通过{ {3}}:
http post https://rpc.testnet.near.org jsonrpc=2.0 id=dontcare method=query \
params:='{
"request_type": "view_access_key_list",
"finality": "final",
"account_id": "near.test"
}'
或使用cURL:
curl -X POST https://rpc.testnet.near.org -H 'content-type: application/json' --data \
'{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_access_key_list",
"finality": "final",
"account_id": "near.test"
}
}'
作为响应,您将找到给定(near.test
)帐户ID的所有公共密钥及其权限。