Вы можете подписать ячейку с помощью ton-crypto или ton-core, а позже проверить ее с помощью check_signature или check_data_signature из stdlib.fc в FunC.
Вот приблизительный фрагмент кода, который вам следует просмотреть:
sign(yourCell.hash(), keypair.secretKey); ## And in the FunC contract, check like this: check_signature(cell_hash(your_cell), signature, public_key)Для получения более подробной информации вы можете обратиться к документации TON по проверке подписей.
С другой стороны, на языке такта, у нас также есть такая же функция на стороне смарт-контракта, как эта:
external(msg: ExtMessage) { let hash: Int = beginCell().storeUint(msg.seqno, 32).storeUint(msg.valid_until, 32).storeRef(msg.message_parameters.toCell()).endCell().hash(); require(checkSignature(hash, msg.signature, self.publicKey), "Invalid Signature"); // 😃😃😃 We checek the hash here require(msg.seqno == self.seqno, "Invalid Seqno"); require(now() <= msg.valid_until, "Invalid Time"); acceptMessage(); self.seqno = self.seqno + 1; send(msg.message_parameters); } https://docs.tact-lang.org/language/ref/math#checksignature