Есть ли у chainlink надежный способ проверить размер / формат файла за хешем, хранящимся в IPFS?
Идея заключалась бы в том, чтобы иметь распределенный способ получения информации о существовании, размере байта и формате файла из твердого смарт-контракта с использованием блокчейна Oracle, такого как Chainlink:
Пример изображения, хранящегося в IPFS:
https://ipfs.io/ipfs/QmYjh5NsDc6LwU3394NbB42WpQbGVsueVSBmod5WACvpte
import "@chainlink/contracts/src/v***/IPFSConsumer.sol";
contract VerifyFile is IPFSConsumer {
// hashIPFS: QmYjh5NsDc6LwU3394NbB42WpQbGVsueVSBmod5WACvpte
function verify(bytes32 hashIPFS) public returns (bool, uint256, string) {
bytes32 requestId = IPFSmetadata(hashIPFS);
// ... fulfill request with requestId
}
}
или же
import "@chainlink/contracts/src/v***/IPFSInterface.sol";
contract VerifyFile {
IPFSInterface internal IPFSmetadata
// hashIPFS: QmYjh5NsDc6LwU3394NbB42WpQbGVsueVSBmod5WACvpte
function verify(bytes32 hashIPFS) public returns (bool, uint256, string) {
(bool exists, uint256 size, string format) = IPFSmetadata.fromHash(hashIPFS);
return ...
}
}
1 ответ
TL;DR: С Chainlink, если вы можете написать программу, которая может это сделать, вы можете это сделать.
Более длинный ответ: это доказательство концепции внешнего адаптера звена цепи IPFS.
Что вам нужно сделать, так это подключить свой контракт к узлу, у которого есть задание:
- Вызывает API IPFS из вашего контракта
- Возвращает размер файла из хеша.
Да, это возможно. Нет, раньше этого не делали. Ты будешь первым. Вот дополнительная информация о создании и использовании внешних адаптеров .