warp-contracts/warp

[FEATURE] Allow Warp to register other L2 TXs

Closed this issue · 13 comments

Is your feature request related to a problem? Please describe.
Support Ardrive Turbo uploaded data to be sequenced.

Describe the solution you'd like

await Warp.register(TX_ID, 'ardrive')

Describe alternatives you've considered
The only alternative is to use Irys, but allowing other bundling services to register assets will provide flexibility

Additional context
Turbo Docs - https://docs.ardrive.io/

Hey, thanks for the feature request, we will discuss/analyse this internally.

@twilson63 can you please send some examples of such data-items/transactions?

The obivious problem is how to order such transaction in relation to the L1 and 'native' Warp L2 transactions.

I guess the simples solution would be to assing the sequencer/sortKey and the time of registering, but with some hint that the transaction should not be posted to Bundlr... @janekolszak , WDYT?

Also...I believe that would still need to create a nested bundle and post it to Arweave - as the data assigned by the sequencer has to be stored on chain (i.e. on Arweave).

I think this is a good idea, but it needs a new feature from Irys.

Warp's sequencer can't just accept txId, because it's not a proof the tx is actually accepted by Irys.
We'd need a signed receipt (txId should be a part of the signature).

This way every sequencer node could check that the tx with this txId is uploaded to Irys without doing any requests. This is needed when registering interaction, but also upon sequencer block verification. There's an REST API to check if tx is on Irys, but it's not possible to make any requests during block verification.

@janekolszak you mean from ar.io? :-) Turbo is ar.io's bundler...

yes, sorry. So it should be easier ;)

Here is an example:

https://viewblock.io/arweave/tx/Fc4XxUVxk-qPyrfA0eZ1NSFxfeUrokzDYqKX1ysAss4

You will notice it is bundled by ardrive turbo's bundler

I think their bundler node is https://upload.ardrive.io/

Thank you Tom! Yes, our upload service can be found at https://upload.ardrive.io (https://upload.ardrive.io/api-docs) or our unified uploading/payment url at https://turbo.ardrive.io.

Clients that complete upload posts will receive the transaction ID for the data item. This data item transaction is immediately indexed within the arweave.net GQL and its data is also available in the arweave.net cache. Not sure if this would help you verify that the transaction ID is valid.

ok @twilson63 , we need to explain one thing :-) - do you want to register contracts or interactions :-)? in the initial description you wrote:
Support Ardrive Turbo uploaded data to be sequenced. - so I've understood that you would like to somehow register interactions posted to via Turbo with the sequencer.

But my collegaues suggested that you might have registering contracts in mind - so can you please clarify this?

Registering contracts should be much easier than interactions...

@ppedziwiatr - Registering Contracts, just like with Irys.

ardrive upload-file ...atomic asset contract...
warp.register(CONTRACT_TX_ID, 'ardrive')

I would like the contract to be registered in the sequencer database, so that we can make it available for trade on bazar.

Yes please.

Warp's sequencer can't just accept txId, because it's not a proof the tx is actually accepted by Irys.

@vilenarios -- does Turbo support signed receipts? I believe that Iris does this, and it would make a lot of sense for Warp not to accept TXs without it.

If Turbo does support receipts, though, it would be incredible to see this in production! Issuing smart contracts and interacting with them, while paying in fiat, could be a 10x improvement in UX.

Sam

Hey @twilson63 - check out warp-contracts@1.4.23, it enables registration of contracts deployed using other providers than Irys. Here is release note for this change https://github.com/warp-contracts/warp/releases/tag/v1.4.23 (this change requires upgrading warp-contracts-plugin-deploy to 1.0.11. Let me now, if that works for you.