我有此代码:
use schnorrkel;
use schnorrkel::{
derive::{ChainCode, Derivation, CHAIN_CODE_LENGTH},
signing_context, Keypair, MiniSecretKey, PublicKey, SecretKey,
};
use substrate_primitives::crypto::Pair as PairT;
use substrate_primitives::sr25519;
use substrate_primitives::sr25519::Pair;
fn main() {
let keypair = sr25519::Pair::generate();
let private_key = keypair.somehow_get_the_private_key_func();
}
我尝试使用SecretKey
特性(在开始时导入),但是它说SecretKey
是私有的,所以我唯一想到的方法是修改Substrate的源代码以添加一个功能,给了我私钥,但是我不想通过更改源代码来实现。
走什么路?
答案 0 :(得分:0)
您实际上需要做什么?您根本不应该在运行时中获得私钥。
如果您想在运行时中签名,如果您只是传递带有其对应私钥的公钥,则有一些助手功能将对消息签名。
https://substrate.dev/rustdocs/master/sp_io/crypto/fn.sr25519_sign.html 测试:https://substrate.dev/rustdocs/master/sp_core/testing/struct.KeyStore.html