Man... that's unfortunate. Thanks for the link!
tinkralge
You typically want a slightly-more-elaborate approach than just handing the network a hash and then getting a file.
[...]
Blake 3 supports verified streaming as it is built upon merkle trees as you described. So is IPFS. As I mentioned, IPFS hashes are that of the tree, not the file contents themselves, but that doesn't help when you have a SHA256 sum of a file and want to download it. Maybe there are networks that map the SHA256 sum to a blake3 sum, an IPFS CID, or even an HTTP URI, but I don't know of one, hence the question here.
BitTorrent and Hyphanet have mechanisms that do this.
Do you know of a way to exploit that? A library maybe?
It's quite simple: I want to retrieveFile(fileHash)
where fileHash
is the output of md5sum $file
or sha256sum $file
, or whatever other hashing algorithm exists.
I'm not sure what your concern is. I'd basically like to call a function retrieveFile(fileHash)
and get bytes back. Or call retrieveFileLocations(fileHash)
and get URIs back to where the file can be downloaded. Also, it'll be opensource, so nothing to reverse engineer.
How do I retrieve a file from bittorrent with just its hash? Does WebMirror solve that? I'll have a look at it...
If you sha256sum $file
and send that hash to somebody, they can't download the file from IPFS (unless it's <2MB IINM), that's the problem. And it can be any hashing algorithm md5, blake, whatever.
Thanks. It does look like the right library to use. A little surprising that it seems to be the only one that's up to date, but at least it exists!
Sure, why not. I'm not the creator of the room 🙂
I know that @[email protected] is there. Maybe he can make you a mod there too? And the channel could be added to the sidebar of this community too.
This week some more work was done on inheriteRS to support inheriting non-trait implementations of functions.
Basically
use inheriters::specialisations;
specialisations!(
struct Parent {
attr1: u8,
}
impl Parent {
fn from_parent(self) -> u8 { 8 }
fn overridden(self) -> u8 { self.attr1 }
}
#[inherit(Child)]
struct Child {
attr2: u8,
}
impl Child {
fn overridden(self) -> u8 { self.attr2 }
}
);
results in
struct Parent {
attr1: u8,
}
impl Parent {
fn from_parent(self) -> u8 { 8 }
fn overridden(self) -> u8 { self.attr1 }
}
struct Child {
attr1: u8, // new
attr2: u8,
}
impl Child {
fn from_parent(self) -> u8 { 8 } // new
fn overridden(self) -> u8 { self.attr2 }
}
There might be some clean-up necessary code-wise and the README has to be expanded. But the project is well on its way to version 1! It's a pity codeberg doesn't have easy CI/CD yet nor domain hosting e.g inheriters.codeberg.io or something. So auto-formatting, testing, auto-tagging, etc. will have to come once I can convince myself to setup a VPS somewhere that hosts all that.
That sounds like fun! Wow. How stable is it at the moment?
Thanks for reporting. I hope it'll get resolved!