Repository navigation
feat(scrolls): add the Litecoin canister source - #272
Conversation
Add scrolls_litecoin with its own vetKD domain, main and test labels, Litecoin fee addresses, and litecoinspace broadcast URLs. Init takes no arguments. No host caller is added, so Litecoin scroll outputs stay rejected. The workspace member and lock entry let cargo test the package under --locked. Co-authored-by: i.mikushin <i.mikushin@icloud.com>
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
[High impact] The PR appears safe to merge; the latest runbook change fixes the outstanding forwarding concern. SummaryAdds the
No new issues were found in the changes since the previous review. Reviews (4) · Last reviewed commit: "docs(scrolls): unset the Litecoin forwar..." · Reviewed by Greptile |
addresses accepts the cost_sign_with_schnorr quote before signing and rejects an empty out_is first. The runbook wasm check fails when the file is missing and looks for a forwarding principal. Co-authored-by: i.mikushin <i.mikushin@icloud.com>
The ltc1 and tltc1 addresses stay in the Litecoin yaml. The runbook states that those initial keys are the Bitcoin fee keys and that a later change edits only that yaml. Drop the test that pinned the witness programs to the Bitcoin bytes. Co-authored-by: i.mikushin <i.mikushin@icloud.com>
dfx deploy compiles again. Every deploy in the runbook unsets NEXT_SCROLLS_LITECOIN_CANISTER_ID, including the fee-address upgrade, so a shell export is not compiled into the wasm that gets installed. Co-authored-by: i.mikushin <i.mikushin@icloud.com>
Summary
Adds the
scrolls_litecoincanister source and the deploy runbook atscrolls/LITECOIN.md. This pull request does not deploy a canister and does not merge.The canister follows the Bitcoin scrolls shape with its own constants:
scrolls_litecoin/derivation_prefix[/v1]main(ltc) andtest(tltc)service : () ->), no create-time cycles argument, no fee-address setterdeposit_cyclesminimum1000000000000The Litecoin fee addresses are their own values in
scrolls/src/scrolls_litecoin/config.yaml. The initial keys are the Bitcoin fee keys inltc1andtltc1encoding. That reuse is intended. A later change edits only that yaml, then rebuilds and upgrades this canister. It does not require editing the Bitcoin fee config.Every
dfx buildand everydfx deployin the runbook unsetsNEXT_SCROLLS_LITECOIN_CANISTER_ID. Deploy compiles again, so a shell-exported value is not compiled into the wasm that gets installed, including the fee-address upgrade.addressesrejects an emptyout_isbefore any signing call. Beforesign_with_schnorr, it accepts the caller cycles thatcost_sign_with_schnorrquotes for keykey_1and that request. The IC cycle-cost reference lists26153846153cycles for the production key. A surplus is not kept as a fee. No cycles attached does not reach the signer.The runbook wasm check fails when the file is missing. It looks for a canister principal, not the forwarding variable's name.
There is no host caller. Filling scroll outputs needs a canister id, and checking the threshold signature needs a public key. Neither exists until this canister is deployed, so Litecoin scroll outputs stay rejected.
scrolls/Cargo.tomlandscrolls/Cargo.lockgain the new package socargo test --package scrolls_litecoinand--lockedCI can see it. The lock diff is only the newscrolls_litecoinpackage entry.Pull request 269 stays open and is not merged. This branch does not edit
charms-client, guest bytes,scrolls_bitcoin, or the version-16 key.Test plan
cargo test --manifest-path scrolls/Cargo.toml --package scrolls_litecoin(15 passed on the parent commit; the runbook check passed again after this edit)cargo test --profile=test litecoin_spell_is_one_op_returnon the earlier parent commitno_attached_cycles_never_reaches_the_signer)dfx buildis intentionally not run in this pull request