Blockchain 如何在NEAR协议中从私钥和/或帐户id获取公钥?

Blockchain 如何在NEAR协议中从私钥和/或帐户id获取公钥?,blockchain,nearprotocol,Blockchain,Nearprotocol,当您可能拥有帐户id(这是公共信息)或拥有私钥(机密)时(例如,从钱包附近的本地存储中提取私钥),并且您想知道相应的公钥时,会出现各种情况 获取相关公钥的选项有哪些?接近协议使用,因此使用ed25519密钥。拥有私钥(秘密)后,可以派生相应的公钥(但不能从公钥派生私钥)。大多数实现EdDSA签名的库都允许从密钥派生公钥,下面是如何使用: 因此,拥有密钥后,您始终可以脱机获取相应的公钥 如果您没有密钥,您将无法签署交易,但您可能仍想知道属于某个用户的公钥,在这种情况下,您可以通过以下方式查询协议网

当您可能拥有帐户id(这是公共信息)或拥有私钥(机密)时(例如,从钱包附近的本地存储中提取私钥),并且您想知道相应的公钥时,会出现各种情况

获取相关公钥的选项有哪些?

接近协议使用,因此使用ed25519密钥。拥有私钥(秘密)后,可以派生相应的公钥(但不能从公钥派生私钥)。大多数实现EdDSA签名的库都允许从密钥派生公钥,下面是如何使用:

因此,拥有密钥后,您始终可以脱机获取相应的公钥

如果您没有密钥,您将无法签署交易,但您可能仍想知道属于某个用户的公钥,在这种情况下,您可以通过以下方式查询协议网络附近的信息:

或与卷曲:

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权限的所有公钥。

要从已知私钥快速获取公钥,您可以使用near CLI(
npm i-g near CLI
)并运行:
near repl
nearAPI.KeyPair.fromString('ed25519:43qKAz3LfCTWpTAZPgA1DGsuwbiAjyosXpDrw24efAGP8Q3TcrnoUzTQHNRF5EbNTR38GRVdsHai9sRnzVu755gU')。publicKey.toString()
nearAPI
是中可用的对象之一)作为一个有用的链接,请参阅以查找有关帐户的更多信息,包括其关联的锁定合同和balancesHow以编程方式获取私钥以广播TX?@AndonMitev请提出一个单独的问题,提供有关您的用例的更多详细信息,包括您运行代码的上下文(浏览器、node.js、合同、其他内容?)
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 -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"
    }
  }'