ethereum / sourcify

Decentralized Solidity contract source code verification service
https://sourcify.dev
MIT License
785 stars 399 forks source link

S3 backup issue tracker #1574

Closed marcocastignoli closed 2 months ago

marcocastignoli commented 3 months ago

We discussed in the meeting today about the tasks left about the S3 and Filebase IPFS sync. This is an issue to track the tasks regarding this.

marcocastignoli commented 2 months ago

Updates on this:

manuelwedler commented 2 months ago

Why is staging and production differently set up (job vs service)?

manuelwedler commented 2 months ago

I really wonder if we can use Filebase then. If we cannot have the root CID and IPNS name, it's not possible to address the root of the repo.

I am thinking what the problem was with our old IPFS setup. The main issue seems to me that we generated the root CID every day again. That means that the hash of each file of the repo was calculated every day. That's quite expensive and as we saw prone to erros. I wonder if we could implement a StorageService around IPFS's MFS feature. That would be much more efficient as not each hash would need to be calculated for generating the root. But this would also add a lot more complexity of course and infrastructure to maintain.

marcocastignoli commented 2 months ago

Why is staging and production differently set up (job vs service)?

Because production takes more than 24 hours to complete, and the maximum time for a job is 24 hours

I wonder if we could implement a StorageService around IPFS's MFS feature.

We already had this, and it wasn't working properly. Here the commit in which we removed it: https://github.com/ethereum/sourcify/commit/e3ae40c3a57989554d4cd3f75132bbc507185446

kuzdogan commented 2 months ago

I guess we can't get the root CID of the repository so IPNS doesn't seem to be an option.

The important thing for now is that the files of the verified contracts are pinned on IPFS individually, and it seems this is happening now regularly, although the whole thing takes longer than a day.

Let's just call this done for now and not go down the whole MFS road. It will take too long and we've already spend a lot of time on this. The above requirement is for now enough. We provide better ways to get the whole repo anyways with #1586

So once #1602 and #1586 are ready let's move forward with communicating all the changes in docs (#1588) and that's enough for now

I'm closing the issue but feel free to continue the discussion

kuzdogan commented 2 months ago

Why is staging and production differently set up (job vs service)?

Just alluding to this, I think they should be created in the same way, i.e. through a VM. The staging VM can be a much cheaper one @marcocastignoli

marcocastignoli commented 2 months ago

I can move the staging environment to a VM, I'll add a task in the backlog