我试图使用nodejs和@emurgo/cardano-序列化- lib -nodejs (CardanoWasm)生成地址和创建事务。跟着医生我试着这样做:
const rootkey = CardanoWasm.Bip32PrivateKey.from_bip39_entropy(
Buffer.from(someEntropy, 'hex'), // entropy is generated from mnemonic
Buffer.from('')
);
const account = rootkey
.derive(harden(1852)) // harden is a function returning 0x80000000+arg
.derive(harden(1815))
.derive(harden(0));
const utxokey = account
.derive(0)
.derive(0)
.to_public();
const stake1 = account
.derive(2)
.derive(0)
.to_public();
const address = CardanoWasm.BaseAddress.new(
CardanoWasm.NetworkInfo.mainnet().network_id(),
CardanoWasm.StakeCredential.from_keyhash(utxokey.to_raw_key().hash()),
CardanoWasm.StakeCredential.from_keyhash(stakekey.to_raw_key().hash())
);
const addressBech32 = address.to_address().to_bech32();因此,在我的示例中,addressBech32是钱包的实际公共地址。当我通过助记符将钱包导入瓜尔达(例如)时,它工作得很好。但真正的根和账户是什么?在我的示例中,私钥和签名密钥是什么?我应该使用什么密钥来签署交易,以及如何使用cardano wasm获得该密钥?我应该使用什么私钥进口钱包(如果我不想使用助记符的原因)?
发布于 2021-03-16 13:36:21
当我通过助记符将钱包导入瓜尔达(例如)时,它工作得很好。但真正的根和账户是什么?
rootKey是您的xpriv (主私钥)的表示,所有的赌注和开销、私钥和公钥都是从它生成的。
生成赌注和签名密钥的过程用CIP-0003描述,基本上是从比特币的BIP32和BIP44标准中提取出来的。
简而言之,该方案允许使用主密钥生成多个单独的钱包“帐户”。在你的例子中:
const account = rootkey
.derive(harden(1852)) // harden is a function returning 0x80000000+arg
.derive(harden(1815))
.derive(harden(0));为Cardano帐户零生成私钥。
更进一步:
account
.derive(0) # external chain (designated for receive addresses)
.derive(0); # index (the first address)将为该帐户中的接收地址为零生成一个私钥。
在我的示例中,私钥和签名密钥是什么?我应该使用什么密钥来签署交易,以及如何使用cardano wasm获得该密钥?
您的示例为(Cardano帐户0)创建接收地址0的bech32地址。因此,从这个地址花费的私钥将与上面的相同:
const utxo_privkey = account
.derive(0)
.derive(0); 我应该使用什么私钥进口钱包(如果我不想使用助记符的原因)?
您可以像在rootKey示例中所做的那样,以字节形式提供熵,也可以使用bech32编码的私钥,如下所示:
const rootKey = CardanoWasm.BIP32PrivateKey.from_bech32("xprv17qx9vxm6060qjn5fgazfue9nwyf448w7upk60c3epln82vumg9r9kxzsud9uv5rfscxp382j2aku254zj3qfx9fx39t6hjwtmwq85uunsd8x0st3j66lzf5yn30hwq5n75zeuplepx8vxc502txx09ygjgx06n0p");发布于 2021-03-04 16:01:09
发布于 2022-08-30 00:21:06
@soccer193,是不是每个地址都需要一个新的密钥?
const utxoPubKey = accountKey .derive(0) // .derive(0) .to_public();
const stakeKey = accountKey .derive(2) //嵌合.derive(0) .to_public();
https://stackoverflow.com/questions/66117174
复制相似问题