Dynamic Participation Through a new EntryDeposit
Action
#9
Replies: 4 comments
-
P.S. |
Beta Was this translation helpful? Give feedback.
-
As you hint in this message, the underlying feature request is "Anonymous participant" or "Role distribution strategies". I do agree that of the three possible Actions, With that introduction, I'm not sure if the Core Language needs to change to support this feature, or if it can be resolved with some instantiation parameters. If we were to change the language, I think the main target could be the Party constructor
Role and DynamicRole would be essentially the same for all aspects, except that the first Action that involves a DynamicRole as the source would mint and give the role. The main reason to distinguish both constructs is that you could offer some warnings if a DynamicRole is a target before it was assigned, and to set up expectations for the contract developer. As part of the Runtime metadata when creating the contract or the PolicyDSL I mentioned in the data constructor, we could indicate that a DynamicRole also needs to deposit some minADA/minNativeToken (for other blockchains). |
Beta Was this translation helpful? Give feedback.
-
Thanks for quick response. I should emphasis more that the main point of this proposition is to implement a practical way to introduce dynamic participants into the contract. This requirement is driven by real life use cases (open swap offering, open auction with 100 rounds - with address variable shadowing these should be pretty simple Marlowe contracts implemented in a constant space). Going back to the discussion.
As you already noticed
I don't think that we have to implement these exotic cases in the language and warn but rather make them hard to achieve but still feasible.
We are strictly trying to solve ad hoc joining to the contract without up front knowledge of the participant list here so any kind of generation or parametrization is specialized before reaching the block chain is not solving the same problem.
I'm not sure what is the semantics of
I want to also emphasis that Role tokens come at a cost and significant usability price - payouts are not instant, withdrawals are extra steps, roles are extra primitives / tokens in wallets etc. That is why I thinik using addresses as a baseline is much more flexible solution.
I'm not sure if I follow - could you please provide more details what do you mean (sketch of the protocol?). |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
I propose extending Marlowe language to include entry deposits which would introduce an
Address
value within the scope. The following is an initial sketch of this proposal.Such an enhancement could effectively address the issue of dynamic address assignment and dynamic role token distribution simultaneously, with Marlowe handling the distribution of the role token to a dynamically assigned address variable.
The logical action to facilitate this assignment and enable users to engage with the
Contract
is a deposit. Not only does this appear to be a natural inclusion, but it also embodies a financial commitment. In contrast, allowing an anonymous party to join by making aIChoice
orINotify
in theContract
seems impractical (no commitment, any bad actor can choose anything).The main changes would affect the types associated with the deposit action and input:
We also need to modify the
Party
structure slightly to reference address variables:We should add also a address scope to the state:
In addition, we must change the
Action
andInputContent
type. Let's skip them for nwo.The semantics of the
EntryDeposit
action can be summarized as follows:IEntryDeposit
binds an AddressId variable to a specified value (Ledger.Network
andAddress
) in theaddresses
state map.Beta Was this translation helpful? Give feedback.
All reactions