dyne / Zenroom

Embedded no-code VM executing human-like language to manipulate data and process cryptographic operations.
https://dev.zenroom.org
GNU Affero General Public License v3.0
197 stars 64 forks source link

ci: update docker release #928

Closed matteo-cristino closed 1 month ago

matteo-cristino commented 1 month ago

CI runs only on tags push

Ignat99 commented 1 month ago

It would probably make sense to create a docker-compose file with all images, including Planetmint and Zenswarm Storage and Fabchain?

Because tests need to be done on signed transactions and tokens (ERC 721, ERC 1155) with ready-made smart contracts. Unfortunately, I have not yet been able to find a ready-made example of using these features.

The example above provides a ready-made contract without any explanation of what it looks like, where it is located, and how to assemble your own distributed data storage.

jaromil commented 1 month ago

It would probably make sense to create a docker-compose file with all images, including Planetmint and Zenswarm Storage and Fabchain?

These two projects are discontinued, as they didn't gain any traction among users. We only maintain generic integration now.

Because tests need to be done on signed transactions and tokens (ERC 721, ERC 1155) with ready-made smart contracts. Unfortunately, I have not yet been able to find a ready-made example of using these features.

The example above provides a ready-made contract without any explanation of what it looks like, where it is located, and how to assemble your own distributed data storage.

We have a ganache server running on a VPS which is used to test against. If you like to help us maintain it, that would be great. Its running as-is since a couple years with the contracts we test.

Ignat99 commented 1 month ago

I have a docker-compose file for ganache with a tunnel via ssh for a remote graphical desktop. But I'm thinking about how to do it easier and more standard. But since I'm not an expert in Ethereum distributed databases specifically, I'm only studying how this is done standardly in Ethereum. Do I need an additional image for the data storage in addition to the existing boot node, RPC and miner?

Ignat99 commented 1 month ago

It would probably make sense to create a docker-compose file with all images, including Planetmint and Zenswarm Storage and Fabchain?

These two projects are discontinued, as they didn't gain any traction among users. We only maintain generic integration now.

Because tests need to be done on signed transactions and tokens (ERC 721, ERC 1155) with ready-made smart contracts. Unfortunately, I have not yet been able to find a ready-made example of using these features.

The example above provides a ready-made contract without any explanation of what it looks like, where it is located, and how to assemble your own distributed data storage.

https://github.com/dyne/Zenroom/blob/master/test/ethereum/create_erc721.sh#L52C27-L52C35

Here I clearly see a request to the test network Fabchain.

https://github.com/dyne/Zenroom/blob/master/test/ethereum/transfer_eth_plt.sh#L42

As far as I understand, this is the address of the contract compiled by Solidity? https://github.com/dyne/fabchain/blob/main/contracts/contracts/TransferOutside.sol

https://github.com/dyne/Zenroom/blob/master/src/lua/zencode_ethereum.lua#L397

Here you can clearly see that your Planetmint data storage is used in the test. Here in this line.

https://github.com/dyne/Zenroom/blob/master/test/ethereum/transfer_eth_plt.sh#L75

That's why I came to the conclusion that to run these tests you need an infrastructure with everything listed above.

Or you/me/our need to change the tests?

It is possible that users simply did not figure out how to deploy it in a fast and standard way. For example, via docker-comose and regular Ethereum images. Because these are 4 different projects and their deployment is not combined in one repository via one docker-composer file.

Also at that time there was a lot of competition, many large corporations released their version of blockchain. And the configuration files of some of these projects do not look trivial at first glance.

For example,

geth is natively compiled from its golang source solc is natively compiled from its C++ source

https://github.com/dyne/fabchain/blob/main/container/Dockerfile#L6-L7

refers to your private repository storage. It is clear that there is simply compiled C++ code, but I did not find a Dockerfile for them. I didn’t notice any submodules in the project either.