ocap-happy method dispatch idioms in Rholang  

  RSS

dckc
 dckc
(@dckc)
Member Moderator
Joined:4 months  ago
Posts: 14
18/06/2018 9:49 pm  
I've seen a few different idioms for method dispatch in rholang... some fit better with ocap patterns such as caretaker better than others.
 
contract @[*thisMint, "makePurse"](@init, return) ...
 
is in MakeMint.rho  ( https://github.com/rchain/rchain/pull/962). I think that idiom works less well.
 
 
I don't see how to make a revocable forwarder for thisMint. ocap patterns such as revocable forwarder and membrane depend on being able to process each message sent to an object. and in this idiom, the makePurse message is not sent to thisMint but rather to @[*thisMint, "makePurse"]
 
Mike Stay notes you can create new names rfMint, forward, and kill, then say

forward!(true) |
contract @[*rfMint, "makePurse"](@init, return) = {
  for (@shouldForward <- forward) {
    forward!(shouldForward) |
    if (shouldForward) {
      @[*thisMint, "makePurse](init, *return)
    } else {
      Nil
    }
} |
contract kill() = {
  for (_ <- forward) { forward!(false) }
}
 
but it's awkward that you have to make a revokable forwarder for each "method" of mint.
 

ReplyQuote
MichaelBirch
(@michaelbirch)
Member Moderator
Joined:5 months  ago
Posts: 36
19/06/2018 2:02 pm  

I replied to your comment on GitHub with how I would compose the "compound name" idiom with revocable forwarders.

https://github.com/rchain/rchain/pull/962#discussion_r196411669


ReplyQuote
  
Working

Please Login or Register