warp-contracts / warp

An implementation of the Arweave SmartWeave smart contracts protocol.
MIT License
159 stars 44 forks source link

[FEATURE] Allow Optional Input Placement in Warp Contract Interactions (Tags vs. Data) #516

Closed iChristwin closed 7 months ago

iChristwin commented 8 months ago

Currently, Warp contract interactions by default pass their inputs through Arweave transaction tags. While the Warp SDK automatically handles exceeding the 4KB tag size limit by placing the input in the transaction data, users lack control over the input placement.

I'd like to request an additional feature that grants SDK users an option to explicitly choose passing the input via the transaction data (Input-Format: data)

Reasoning:

When the input is passed through tags, it's not retrievable using the interaction ID on Arweave gateways. When the input is passed via data, it becomes retrievable from any Arweave gateway using the interaction ID. This aligns with how other data stored on Arweave is accessible. This feature would be particularly valuable for scenarios where user would want the input data to also be consumed outside of warp and to be composable with apps in other ecosystems.

Consider a scenario in tokenizing Warp interactions as ERC-721 tokens on Ethereum. In such a case, the interaction input would serve a dual purpose: acting as both the functional input for the Warp contract and the metadata associated with the corresponding ERC-721 NFT. Unfortunately, the current tag-based approach hinders the ability to retrieve this crucial metadata using standard Arweave gateway queries.

Similarly, for IoT devices sending JSON inputs to Warp contracts, the current approach makes it difficult for external applications to directly consume this data.

Proposed Solution:

Introduce a new option within the Warp SDK interaction methods that allows users to specify the desired input format (tag or data). This could be achieved through an additional parameter or a dedicated method for interactions with explicit data input placement.

Conclusion:

I believe this feature would significantly improve the composability and the variety of projects built with Warp. I'm open to discussing different implementation approaches that best suit the project's design and practices.

Thank you for considering this request!