I'm trying to get cardano-serialization-lib working without up-to-date docs (https://github.com/Emurgo/cardano-serialization-lib/blob/master/doc/getting-started/generating-transactions.md). The example for making a transaction is outdated and the method .from_bech() doesn't exist on PrivateKey property.
Since the txBuilder.add_key_input() function is expecting an ed25519 hash, i thought it could be good to use Ed25519KeyHash but I am getting rust errors somewhere in the wasm hand-off.
Can anyone explain how to generate a root key and properly pass into the txBuilder.add_key_input() function?
Ultimately my goal to to generate and sign transactions from javascript without running a node and sync'd wallet. Any suggestions are welcome comments.
const cardano = (async () => { return await import('@emurgo/cardano-serialization-lib-browser') })()
let cw = cardano.then(async x => {
console.log(x, x.Bip32PrivateKey);
function harden(num) {
return 0x80000000 + num;
}
const rootKey = x.Bip32PrivateKey.from_bech32("xprv17qx9vxm6060qjn5fgazfue9nwyf448w7upk60c3epln82vumg9r9kxzsud9uv5rfscxp382j2aku254zj3qfx9fx39t6hjwtmwq85uunsd8x0st3j66lzf5yn30hwq5n75zeuplepx8vxc502txx09ygjgx06n0p");
const accountKey = rootKey
.derive(harden(1852)) // purpose
.derive(harden(1815)) // coin type
.derive(harden(0)); // account #0
const utxoPubKey = accountKey
.derive(0) // external
.derive(0)
.to_public();
const stakeKey = accountKey
.derive(2) // chimeric
.derive(0)
.to_public();
console.log({ rootKey, accountKey, utxoPubKey, stakeKey })
console.log(rootKey, x.PrivateKey.generate_ed25519(accountKey))
const txBuilder = x.TransactionBuilder.new(
// all of these are taken from the mainnet genesis settings
// linear fee parameters (a*size + b)
x.LinearFee.new(x.BigNum.from_str('44'), x.BigNum.from_str('155381')),
// minimum utxo value
x.BigNum.from_str('1000000'),
// pool deposit
x.BigNum.from_str('500000000'),
// key deposit
x.BigNum.from_str('2000000')
);
// const prvKey = x.PrivateKey.from_bech32("ed25519e_sk16rl5fqqf4mg27syjzjrq8h3vq44jnnv52mvyzdttldszjj7a64xtmjwgjtfy25lu0xmv40306lj9pcqpa6slry9eh3mtlqvfjz93vuq0grl80");
txBuilder.add_key_input(
new x.Ed25519KeyHash(rootKey),
x.TransactionInput.new(
x.TransactionHash.from_bytes(
Buffer.from("8561258e210352fba2ac0488afed67b3427a27ccf1d41ec030c98a8199bc22ec", "hex")
), // tx hash
0, // index
),
x.Value.new(x.BigNum.from_str('3000000'))
);
console.log({txBuilder});
return x
})```
[1]: https://github.com/Emurgo/cardano-serialization-lib/blob/master/doc/getting-started/generating-transactions.md