At this point in reading through the DIS: Upgrading thread I kinda gave up trying to understand what's going on. :P

On 4/25/2018 8:38 PM, Aris Merchant wrote:
Hang on for a second. I don't get what wrong with paying a fee of 0. The
fee for a given action is defined. If I pay a fee of 0, then I haven't paid
the specified fee for the action, so I can't do anything. The only case
where it comes up is when the fee for an action is defined as 0, in which
case we want the action to suceed. What am I misunderstanding?

Also, I like the multiset. The wording seems to me to be a clean, generic
way of defining fees. If a fee for an action is defined as all assets in
the actors possesion, that should be valid. A more realistic example would
be when we had estates, which were defined as assets. You could transfer an
estate to get an extra vote. We should be able to define that as a fee
based action. We should be able to define any payment of any assets as a
fee based action. Keep in mind that upgrading a facility, the thing that
prompted this discussion, requires multiple types of currency, and in the
future might just as well require assets.

I know I have a tendency to overcomplicate every rule I touch by making it
generic and adding a ton of unnecessary special cases. Here the
disambiguation for non-integers might be unneeded, or best placed somewhere
else. The coin disambiguation already exists in the asset rule itself,
although I can't check at the moment whether it covers this specific case
(I suspect it does, because I wrote the current assets rule and this is the
kind of thing I'd overcomplicate and generify). However, I can't see why
the multiset definition isn't a good description of what we're going for
here. When a rule calls for a fee of 5 coins, it's asking for a multiset of
5 coins. When a rule calls for a fee of 10 rule-defined assets of the
players choice, that's the multiset it wants. I'd appreciate an explanation
of why exactly it's an unneeded complication? All it requires is for the
reader to understand what a multiset is (which I think most of us do), or
google it and learn something and maybe have an aha moment after seeing how
it fits.

-Aris

On Wed, Apr 25, 2018 at 5:12 PM Kerim Aydin <ke...@u.washington.edu> wrote:



We need an exception for the empty set.  A long time ago, there was an
argument about whether "I pay a fee of 0" was paying a fee (allowing the
action) or not paying a fee (no transfer occurring).  [The CFJ answer then
depending on exact wording so is not applicable to present-day].

Now we have a precedent that flipping a switch to the same value does
not count as flipping the switch, so I'd imagine paying a 0 fee would
not count as paying the fee if we followed that reasoning... unless empty
sets are explicitly excepted.

I think adding "multiset" is an uneeded complication.  Seeing that version
has made me to think that even using sets is a complication, so I'll
ponder,
but I'm thinking to back off full generalization and restrict this to
Currencies (fungible stuff only) in my next draft (with an exception for
amounts of currency equaling zero).


On Wed, 25 Apr 2018, Aris Merchant wrote:
I think you mean a non-empty multiset. Also, I don't see any reason to
require the set to be non-empty. That's sensible for constant fees but
could break some types of variable fee.

Here's a phrasing that includes the default and rounds correctly:

"If the Rules associate payment of a multiset of assets (hereafter the
fee for the action; syns: cost, price, charge) with performing an
action, that action is a fee-based action. If the fee is a specified
in terms of a non-natural number of assets, the fee is rounded up to
the nearest natural number. If the fee is specified in terms of a
number without a specified unit, the unit is the official currency of
Agora."

This allows complex fees, which is fine, given that a complex (or
otherwise unreal) fee is impossible to pay and is simply equivalent to
making the action impossible.

-Aris

On Wed, Apr 25, 2018 at 1:30 PM, Kerim Aydin <ke...@u.washington.edu>
wrote:


I tried a version with general assets, if this is ugly can restrict to
currencies...

Proto v2:  Let's really define payment solidly please, finally.

Create the following Rule, Fee-based actions:

         If the Rules associate payment of a non-empty set of assets
(hereafter
         the fee for the action; syns: cost, price, charge) with
performing an
         action, that action is a fee-based action.
         If the fee is a non-integer quantity of a fungible asset, the
actual
         fee is the next highest integer amount of that asset.

[Takes out default - if you mean Coins in the Rules say Coins, if you
fail to specify a type of asset your rule is broken].

         To perform a fee-based action, an entity (the Actor) who is
         otherwise permitted to perform the action must announce that e
         is performing the action; the announcement must specify the
         correct set of assets for the fee and indicate intent
         to pay that fee for the sole purpose of performing the action.

         Upon such an announcement:

         - If the Rules specify a recipient for the fee, and the Actor
           CAN transfer that specified fee from emself to the recipient,
           then that fee is transferred from the Actor to the recipient
           and the action is performed simultaneously;

         - If the Rules do not specify a recipient, and the Actor CAN
           destroy the specified fee in eir possession, then that fee
           in eir possession is destroyed and the action is
           performed simultaneously.

         - Otherwise, no changes are made to asset holdings and the
           action is not performed.

         If the Rules define a fee-based action but the specified
         set of assets is the empty set, then the action is performed by
         announcement, but the announcement must include that there
         is an (empty or 0) fee for the action.

[Without this 0 edge case: arguments on the nature of the empty set
galore!]

[Todo:  change rules to use this wording, remove "pay" = "transfer"
definition
currently in rules]


On Wed, 25 Apr 2018, Ørjan Johansen wrote:

On Wed, 25 Apr 2018, Kerim Aydin wrote:

On Wed, 25 Apr 2018, Ørjan Johansen wrote:
On Wed, 25 Apr 2018, Kerim Aydin wrote:

       If the Rules associate a non-negative fee (syn: cost,
price,
       charge), with an action, or state that an action CAN be
performed
       by paying a fee, that action is a fee-based action.  If
the
       specified cost is not an integer, the actual fee is the
next
       highest integer.  The currency of the fee is either the
       currency associated with that action, or Coins if no
currency
       is specified.

"next higher".  What if a cost is in a non-currency asset?

I've been trying to figure out wording for non-fungible assets and
failing.
(or at least failing to do both fungible and non-fungible in the
same
paragraph while keeping it concise).

It may be too complicated, but then the first sentence should
explicitly state
that it only applies to fees in currencies, lest it be triggered
accidentally
by other "costs", after which the last sentence could absurdly change
the cost
into Coins.

"and announce that there is a fee for performing that specific
action"
seems a
bit redundant, and doesn't seem quite like the thing people do
when
phrasing
payments naturally.

How about:
           To perform a fee-based action, an entity (the Actor) who
is
           otherwise permitted to perform the action must announce
that e
           is performing the action; the announcement must specify
the
           correct amount and currency of the fee and indicate intent
           to pay that fee for the sole purpose of performing the
action.

I think "I pay 5 coins to do X" indicates intent to pay the fee as
per that
wording?

Yeah.

Greetings,
Ørjan.



Reply via email to