问题描述
我按照基板链下配方来实现一个需要进行签名交易的链下工作器。 由于它不起作用,我添加了一些调试语句,它似乎正在检测 AppCrypto 中的帐户,创建有效负载,但未能生成签名。
pub type SignedPayload = generic::SignedPayload<Call,SignedExtra>;
impl<LocalCall> frame_system::offchain::CreateSignedTransaction<LocalCall> for Runtime
where
Call: From<LocalCall>,{
fn create_transaction<C: frame_system::offchain::AppCrypto<Self::Public,Self::Signature>>(
call: Call,public: <Signature as sp_runtime::traits::Verify>::Signer,account: AccountId,index: Index,) -> Option<(
Call,<UncheckedExtrinsic as sp_runtime::traits::Extrinsic>::SignaturePayload,)> {
debug::debug!(target: "OWNERS","create_transaction");
debug::debug!(target: "OWNERS","create_transaction account: {:?}",&account);
let period = BlockHashCount::get() as u64;
let current_block = System::block_number()
.saturated_into::<u64>()
.saturating_sub(1);
let tip = 0;
let extra: SignedExtra = (
frame_system::CheckSpecVersion::<Runtime>::new(),frame_system::CheckTxVersion::<Runtime>::new(),frame_system::CheckGenesis::<Runtime>::new(),frame_system::CheckEra::<Runtime>::from(generic::Era::mortal(period,current_block)),frame_system::CheckNonce::<Runtime>::from(index),frame_system::CheckWeight::<Runtime>::new(),pallet_transaction_payment::ChargeTransactionPayment::<Runtime>::from(tip),);
let raw_payload = SignedPayload::new(call,extra)
.map_err(|e| {
debug::native::warn!("SignedPayload error: {:?}",e);
})
.ok()?;
debug::debug!(target: "OWNERS","create_transaction raw payload ok");
raw_payload.using_encoded(|payload| {
debug::debug!(target: "OWNERS","create_transaction payload: {:?}",&payload);
});
let signature = raw_payload.using_encoded(|payload| C::sign(payload,public));
debug::debug!(target: "OWNERS","create_transaction signature: {:?}",&signature);
//let address = account;
//let (call,extra,_) = raw_payload.deconstruct();
//Some((call,(address.into(),signature,extra)))
None
}
}
2021-06-14 08:53:54.127 DEBUG ThreadId(34) OWNERS: create_transaction
2021-06-14 08:53:54.127 DEBUG ThreadId(34) OWNERS: create_transaction account: 089e6f3129e3ab81bac78cef021d80debc3acb4c34152fa93b15b5174adfac69 (5CG1JeWG...)
2021-06-14 08:53:54.128 DEBUG ThreadId(34) OWNERS: create_transaction raw payload ok
2021-06-14 08:53:54.128 DEBUG ThreadId(34) OWNERS: create_transaction payload: [8,123,171,1,176,170,14,20,103,190,47,243,111,165,88,217,60,15,40,2,215,117,222,154,130,62,96,141,156,91,189,180,19,251,232,81,216,61,240,146,99,239,45,37,48,219,73,38,150,3,177,214,143,107,205,218,200,16,55,71,176]
2021-06-14 08:53:54.238 DEBUG ThreadId(34) OWNERS: create_transaction signature: None
我使用的是基于基板标签 v3.0.0 的简单模板节点和托盘。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)