2026-02-09 14:12:26 +02:00
|
|
|
use lb_core::mantle::{
|
2025-12-01 12:48:39 +01:00
|
|
|
MantleTx, Op, OpProof, SignedMantleTx, Transaction as _,
|
|
|
|
|
ledger::Tx as LedgerTx,
|
|
|
|
|
ops::channel::{ChannelId, MsgId, inscribe::InscriptionOp},
|
|
|
|
|
};
|
2026-02-09 14:12:26 +02:00
|
|
|
use lb_key_management_system_service::keys::{Ed25519Key, ZkKey};
|
2025-12-18 23:10:22 +01:00
|
|
|
use testing_framework_core::scenario::DynError;
|
2025-12-01 12:48:39 +01:00
|
|
|
|
|
|
|
|
/// Builds a signed inscription transaction with deterministic payload for
|
|
|
|
|
/// testing.
|
2025-12-18 23:10:22 +01:00
|
|
|
pub fn create_inscription_transaction_with_id(id: ChannelId) -> Result<SignedMantleTx, DynError> {
|
2025-12-13 05:59:28 +01:00
|
|
|
let signing_key = Ed25519Key::from_bytes(&[0u8; 32]);
|
|
|
|
|
let signer = signing_key.public_key();
|
2025-12-01 12:48:39 +01:00
|
|
|
|
|
|
|
|
let inscription_op = InscriptionOp {
|
|
|
|
|
channel_id: id,
|
|
|
|
|
inscription: format!("Test channel inscription {id:?}").into_bytes(),
|
|
|
|
|
parent: MsgId::root(),
|
|
|
|
|
signer,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let mantle_tx = MantleTx {
|
|
|
|
|
ops: vec![Op::ChannelInscribe(inscription_op)],
|
|
|
|
|
ledger_tx: LedgerTx::new(vec![], vec![]),
|
|
|
|
|
storage_gas_price: 0,
|
|
|
|
|
execution_gas_price: 0,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let tx_hash = mantle_tx.hash();
|
2025-12-13 05:59:28 +01:00
|
|
|
let signature = signing_key.sign_payload(tx_hash.as_signing_bytes().as_ref());
|
|
|
|
|
let zk_key = ZkKey::zero();
|
2025-12-11 08:13:23 +01:00
|
|
|
tracing::debug!(channel = ?id, tx_hash = ?tx_hash, "building inscription transaction");
|
2025-12-01 12:48:39 +01:00
|
|
|
|
2025-12-18 23:10:22 +01:00
|
|
|
let zk_signature = ZkKey::multi_sign(&[zk_key], tx_hash.as_ref())
|
|
|
|
|
.map_err(|err| format!("zk signature generation failed: {err}"))?;
|
|
|
|
|
|
2025-12-01 12:48:39 +01:00
|
|
|
SignedMantleTx::new(
|
|
|
|
|
mantle_tx,
|
|
|
|
|
vec![OpProof::Ed25519Sig(signature)],
|
2025-12-18 23:10:22 +01:00
|
|
|
zk_signature,
|
2025-12-01 12:48:39 +01:00
|
|
|
)
|
2025-12-18 23:10:22 +01:00
|
|
|
.map_err(|err| format!("failed to build signed mantle transaction: {err}").into())
|
2025-12-01 12:48:39 +01:00
|
|
|
}
|