xdevguild / buildo-begins

MultiversX blockchain CLI helper tools - interaction with APIs, smart contracts and protocol
https://www.npmjs.com/package/buildo-begins
MIT License
23 stars 8 forks source link

👷 What should Buildo handle for you? #1

Open juliancwirko opened 2 years ago

juliancwirko commented 2 years ago

The overall plan for Buildo is to simplify some operations and not to relay on erdpy. It is not because the erdpy lib is terrible or something. It is a great library. Buildo's main idea is included in three main points:

  1. There will be essential operations like making transactions, deploying smart contracts, and 'automated' interactions with smart contracts based on ABI. But also not standard API interactions, filtering, and exports. All with simplified CLI, including a predefined configuration file in JSON format.
  2. Because the erdjs is a Typescript/JavaScript library, the whole Buildo will be an excellent source for learning purposes for newcomers. Most of the developers know the language.
  3. Buildo can also be a good starting point for any custom CLI tool which will rely on erdjs SDK. So you can take it and build upon it.

Please leave your comments below. Let us know what functionality would you like to have, what could be simplified, and what kind of API operations would you like to simplify. What types of data processing would you like to find here? Thanks!

lwt-developers commented 2 years ago

It will be great a way to generate a multisig wallet easily

ocularmagic commented 1 year ago

I would love to see a way to create NFT's using data stored on Arweave instead of IPFS. I downloaded the latest build and was able to use Buildo to create an NFT with a JPG stored on Arweave, but it will not pull the attribute data from the JSON file stored in the same way. I'm trying to track down why this is the case? If the parsing of the data just boils down to pulling in the JSON file located via a URL, why does it matter if the URL points to Arweave instead of IPFS? I'm not understanding.

juliancwirko commented 1 year ago

Elrond services, like public API, etc., rely on IPFS, at least for now. So, of course, you can create an NFT using Arweave storage, but it won't be compatible with official Elrond services. If you want to dig deeper, you can check the: https://github.com/ElrondNetwork/api.elrond.com.

The main problem, I think, is that metadata in NFT attributes takes only the IPFS CID and file name. It is then resolved using a custom (hardcoded?) IPFS gateway. Because of that also, this lib limits it to the IPFS only.

ocularmagic commented 1 year ago

The main problem, I think, is that metadata in NFT attributes takes only the IPFS CID and file name. It is then resolved using a custom (hardcoded?) IPFS gateway. Because of that also, this lib limits it to the IPFS only.

I really hope that changes in the future. I don't know what the benefit would be to using only IPFS when there are obviously other options out there that may be considered better by some users. Thanks for the link to the API, I'll be digging into it some more.

juliancwirko commented 1 year ago

I agree that the metadata resolution in API and other services should have more generic logic, and I believe that arweave will be supported soon. I am not into it much, so I am not sure, but generally, adding that support shouldn't be very complicated. You can add whatever you want to the Elrond NFT attributes, so this is a matter of services, mainly the Elrond API, and how they will resolve the data from there.

ocularmagic commented 1 year ago

Can I use Buildo to add in attributes at the same place I add in tags? Instead of importing them from a JSON file hosted on IPFS?

juliancwirko commented 1 year ago

The Elrond API services resolve the data using a predefined format in the attributes: metadata:ipfsCID/fileName.json, so you need to upload the metadata file to the IPFS to get the data in the API response. But of course, you can also add other stuff there, like: metadata:ipfsCID/fileName.json;someCustomData:myCustomValue etc. Then you can use that by manually parsing the attributes field, which is base64 encoded in response from API. Maybe also some of the NFT marketplaces will resolve that. I think some of them can do that.

ocularmagic commented 1 year ago

Right on. Thanks for the detailed reply. I'll mess around with it and see what I can come up with.