Date

May 9, 2019

Participants

  • @Kelly Foster

  • @Kayvan Kazeminejad

  • @Timm Schäuble

  • @Artur Gajowy

  • @Ovidiu Deac

  • @Dominik Zajkowski

  • @Tomáš Virtus

  • @Sebastian Bach

  • @Adam Szkoda

  • @Former user (Deleted)

  • @Łukasz Gołębiewski

  • @Pawel Szulc

  • @Lucius Meredith

Goals

Review the dApp developer use case for ListenAtName. Discuss improvements.

Discussion topics

Item

Notes

Item

Notes

Recap of the issue

ListenAtName misses updates on channels and doesn't accurately reflect the tuplespace, making it difficult to validate the success of the transfer of data on the blockchain.

RSong use case

  • Through 2 deploys

    • Put data on chain

    • Request via ListenAtName

  • To access data on chain, request via ListenAtName

  • Kayvan walked through rsong-immersion.rho

    • Risk removal of forgeable names will break call to string to fetch song

  •  

Discussion

  • Discussion about challenges of delivering in time what would be ideal

  • Discussion about how implementation of POBox would support this

  • Discussion about SubscriptionAtName

    • Using Kafka

  • To observe results off-chain, we need things to be finalized

    • We cannot reason about data on-chain that is not finalized

    • Concern about the amount of time it takes to achieve finalization

  • Łukasz’s idea - app looks at comm event log

  • Artur’s idea -

  • Artur’s other idea - look off chain

  • Use case: You want to be able to say what your contract is doing for debugging reasons. You want to be able to

  • DECISION Start with ListenAtName that asks and returns for persisted tuplespace names, data that is finalized.

    • Later work on handling ephemeral data

  • Use case - I want the updates

    • I pass a hash of a finalized block I know

    • I could then inquire for what’s changed after that (ex was was deployed)

    • Requires tracking my deploy ID

  • Use case

     

A proposal

  • We will improve ListenAtName in stages

  • First stage, be able to serve data about the most recent finalized block as a stream

    • User provides

      • Provide 2 hashes:

        • Hash A is most recent finalized block

        • Hash B is the one before that (default is most recent if not specified)

      • Provide deploy ID

    • ListenAtName returns the diff between the hashes

    • Requires the ability to generate the deploy ID

    • Requires putting the deploy ID and unforgeable name in the tuplespace

    • Assumes ability to connect deploy ID to unforgeable name

  • This is blocked by NextRSpace completion

Solution for knowing what to listenAt from an off-chain location

 

DECISION - Do this!

  • Introduce on-chain deploy ID token. Each deploy can use to look up a deploy corresponding to it on a channel

  • You ListenAtDeploy to the deploy ID

  • If you need to distinguish between different types of messages in the deploy you make your items a tuple and make them a category

  • Plan to remove ListenAtName

  • Create a deployID channel using the system process to generate name

Action items

@Kelly Foster follow up with RSpace and Casper teams on next steps for ListenAtName
@Artur Gajowy ticket ephemeral data work

Decisions