Forum reference mechanisms: Difference between revisions

From DAO Governance Wiki
Jump to navigation Jump to search
 
(4 intermediate revisions by the same user not shown)
Line 5: Line 5:


== Primitives ==
== Primitives ==
Leaching, donating, and incinerating are primitives of all possible reference mechanisms. They are complete in the sense that any complicated type of revaluation mechanism can be achieved by combining these three primitives in series.
Forum references allow review. The Forum is a collection of posts (comments, proposals, work evidence, etc.), each one potentially having a set of references to older posts. As such the Forum is a DAG (directed acyclic graph), since the posts are nodes in the graph, and references are directed edges between posts. The Forum graph is acyclic, since older posts cannot reference newer posts. The Forum is weighted by the REP that each post earns during the [[Reputation#REP Token Minting Mechanism|REP Token Minting Mechanism]] stage and the strength of each edge reference. The Forum is reweighted every time a new post is added, allowing a decentralized means of review.
 
=== Leaching ===
??Leaching is also called negatively citing or referencing.
 
==== Leaching reference code ====
''Main page: [[Leaching reference code]]''


Donating, leaching, and incinerating are primitives of all possible reference mechanisms. They are complete in the sense that any complicated type of revaluation mechanism can be achieved by combining these three primitives in series.
=== Donating ===
=== Donating ===
??A donation is also called a positive citation or a positive reference.
??A donation is also called a positive citation or a positive reference.
Line 18: Line 13:
==== Donating reference code ====
==== Donating reference code ====
''Main page: [[Donating reference code]]''
''Main page: [[Donating reference code]]''
=== Leaching ===
??Leaching is also called negatively citing or negatively referencing.
==== Leaching reference code ====
''Main page: [[Leaching reference code]]''


=== Incinerator ===
=== Incinerator ===
Line 31: Line 32:
A post may simultaneously leach and donate to another post. It is important to note that the order in which the references are executed matters. By default, a post with both leaching and donating references executes leaching first and donating second, though this can be reversed by fiat.
A post may simultaneously leach and donate to another post. It is important to note that the order in which the references are executed matters. By default, a post with both leaching and donating references executes leaching first and donating second, though this can be reversed by fiat.


If there are several leaching references, it is also important to note that the order in which the leaching references are executed matters--switching the order of execution may change the outcome. This non-commutativity arises because the order of references in time is different. For example, suppose <code>post3</code> leaches from an older <code>post1</code> first, then leaches from a newer <code>post2</code> which has already leached from <code>post1</code>, then you get a lesser result for <code>post3</code> than when the order is reversed.   
If there are several leaching references, it is also important to note that the order in which the leaching references are executed matters switching the order of execution may change the outcome. This non-commutativity arises because the order of references in time is different. For example, suppose <code>post3</code> leaches from an older <code>post1</code> first, then leaches from a newer <code>post2</code> which has already leached from <code>post1</code>, then you get a lesser result for <code>post3</code> than when the order is reversed.   


=== Swap value from one post to another ===
=== Swap value from one post to another ===
Line 46: Line 47:


=== Chains of references ===
=== Chains of references ===
Donation and leaching are not perfectly symmetric. By default, a chain of posts which all donate will recalculate the values of the posts down the chain when a new donating post is added to the chain. However, a leaching post only affects the value of the post it references--value changes from leaching do not propagate down the chain.  
Donation and leaching are not perfectly symmetric. By default, a chain of posts which all donate will recalculate the values of the posts down the chain when a new donating post is added to the chain. However, a leaching post only affects the value of the post it references value changes from leaching do not propagate down the chain.  


For example, suppose <code>postK</code> at time <math>j</math> has value <math display="inline">R_{K,j}</math>. If <code>post1</code> with initial value <math display="inline">R_{2,0}</math> donates 0.5 to <code>post0</code>, and <code>post2</code> donates 0.7 to <code>post1</code>, then at time 2 we have <math>R_{1,2}=R_{1,1}+0.7R_{2,2}</math> and <math display="inline">R_{0,2}=R_{0,0}+0.5R_{1,1}+(0.7)(0.5)R_{2,2}</math>. So at time 2 the value from <code>post2</code> flows down through <code>post1</code> to <code>post0</code>.  
For example, suppose <code>postK</code> at time <math>j</math> has value <math display="inline">R_{K,j}</math>. If <code>post1</code> with initial value <math display="inline">R_{2,0}</math> donates 0.5 to <code>post0</code>, and <code>post2</code> donates 0.7 to <code>post1</code>, then at time 2 we have <math>R_{1,2}=R_{1,1}+0.7R_{2,2}</math> and <math display="inline">R_{0,2}=R_{0,0}+0.5R_{1,1}+(0.7)(0.5)R_{2,2}</math>. So at time 2 the value from <code>post2</code> flows down through <code>post1</code> to <code>post0</code>.  
Line 71: Line 72:
=== Correct a previous post which was leached ===
=== Correct a previous post which was leached ===


== Governance proposals ==
== Judicial governance proposals ==
Combining several of the above examples gives governance proposals that can reflect more complicated intentions of the will of the [[DAO]] to revaluate its REP distribution. Some initial basic examples are collected in this section.
''Main page: [[Judicial governance proposal]]''
 
We make some assumptions about the particular culture of our example DAO for the purposes of illustration. These are not required and will be changed depending on the purpose of the particular DAO.
 
=== Example process ===
First we assume the DAO enforces a <math display="inline">10%</math> global tax on all new REP value minted in the DAO. This number is not necessary for any particular DAO and the percentage is arbitrarily chosen for the purposes of illustration. By a <math display="inline">10%</math> tax, we mean that whenever new fees enter the system the amount of new REP minted is <math display="inline">1.10*fee</math>. In this case, <math display="inline">1.10</math> is the minting ratio and the extra <math display="inline">10%</math> is the [[Forum reference mechanisms#Governance tax|governance tax]]. We call it a tax, because if the newly minted tokens are not burned (see below) then they dilute the power of previous REP tokens, so that all members are affected, since their REP salary is diluted.
 
By fiat, the DAO requires that every new [[work smart contract]] (WSC) post which earns fees and REP must donate <math display="inline">10%</math> of the new REP to give power to posts dictated by the governance process. Governance posts are called proposals. New posts automatically reference approved proposals because the UI automates the process of fulfilling proposals.
 
The governance process is as follows. A proposal is submitted. If accepted the proposal becomes a promise. Future work posts donate their <math display="inline">10%</math> REP to fill all promises. When a promise is filled it becomes a fulfilled promise.
 
In greater detail: A ''proposal'' is a post submitted to the Validation Pool for gREP owners to consider. A proposal typically has 0 value at initiation and will onlyA proposal references other posts, donating and/or leaching, which entail a suggestion for redistribution of REP. In other words, a proposal has a set of references and number called its full potential. The ''full potential'' is the value it proposes to eventually receive by future work posts. The full potential and the references determine the actual value of REP redistribution of a proposal.
 
If the proposal is accepted by the DAO through a [[Validation Pool]], then it becomes a ''promise''. That is, a promise is a validated post in the Forum which has a set of references and a specified full potential. Typically a promise starts with 0 value, then subsequent work posts donate REP value to it until it reaches value equal to its full potential. Then the promise becomes a ''fulfilled promise''. Before a promise is fulfilled, it is an ''unfulfilled promise''.
 
The current WSC is continually updated to hold the set of unfulfilled promises. The worker UI parses the difference between the sets of fulfilled and unfulfilled promises. If there are no outstanding unfilled promises, then the UI automatically donates the <math display="inline">10%</math> governance tax from the work post to the incinerator.
 
=== Governance tax ===
The parameter <math>p=10%</math> in the above example is the ''governance tax''. From the DGF model, the parameter <math>p</math> is included in the minting ratio <math>m</math>. It can be chosen by the DAO to be any number <math>0\leq p< \infty</math>.   
 
The governance tax is particularly equitable, since every worker pays precisely the same amount, relatively. Since every WSC donates the same <math display="inline">10%</math> to governance references, then the REP every worker receives from a WSC has the same value by the [[wikipedia:Quantity_theory_of_money|quantity theory of money]] in economics. To illustrate this point, notice that if every members' REP holdings were arbitrarily doubled, then the salary each member receives would be unaffected.     
 
The REP salary is unaffected by the <math display="inline">10%</math> of REP tax whenever it is incinerated, because there is no actual loss in REP salary, because everyone has the same governance tax for every WSC. The tax only affects the relative quantity of REP tokens, leaving the salary mostly unchanged.     
 
Similarly if governance equally redistributes REP within the Forum--meaning the amount leached from posts is equal to the amount donated to posts--then any member whose posts are not affected will not have any change in their REP salary.     
 
The only time general REP salary is affected by the governance tax is when the reference donation and leaching is not equal. When donation is larger than leaching, then the REP salary of other members is decreased, since the total REP is increased, diluting the power of REP. When leaching is larger than donation, then the REP salary of other members is increased, since the total REP is decreased, which concentrates the power of REP. Therefore the effect on the salary is bound by the size of <math display="inline">p</math> and is typically much smaller. It is worth reiterating: ''governance tax REP sent to the incinerator is good for every member of the DAO.''     
 
So a tax of <math display="inline">p=10%</math> does not affect the value of REP unless it is used to donate to new posts in excess of leaching, which should only be done to redress past mistakes.     
 
Regardless of the change in REP total, the tax affects every REP token equally, since the tax dilutes REP universally. Since every WSC post is required to donate at least <math display="inline">p=10%</math> of its REP to governance, then that REP is available for revaluing the WDAG in response to governance proposals that the DAO approves, as long as the DAO is actually earning revenue.   
 
Finally, the <math display="inline">p=10%</math> parameter is arbitrary. Governance can decide to make <math display="inline">p=1%</math> if the DAO wishes governance to move slower, or <math display="inline">p=200%</math> if it desires faster governmental responses. A smaller number gives greater stability and less responsive regulation. A larger choice destabilizes the DAO and is a threat to security, but also makes the DAO more nimble and responsive to changes in the market and makes policing more effecting.   
 
=== Example proposals ===
 
==== Proposal to remove REP from post1. ====
 
==== Proposal to donate REP to post1. ====
 
==== Proposal to remove REP from post1 and donate to post2. ====
 
==== Proposal to swap value from one post to another ====
??Fix:[[File:WDAG Reweighting Primitive.png|center|frameless|555x555px|Reweighting the Forum]]
 
 
The figure displayed illustrates a scheme for redistributing power from Post1 to Post2.
 
In this case we can imagine governance concluding that Post1 was bad and Post2 was good. Then governance makes Post3 with power 10 REP and validates it. Then in the displayed example the Forum WDAG has been revaluated, i.e., re-weighted. This is the primitive that allows governance to review previous judgements and correct mistakes made in the past. The incinerator is a complication that allows this re-weighting action to keep the total graph weight constant.
 
This isn't the only way to achieve re-weighting. Every approach has its own advantages and disadvantages. This approach encourages stability because it is particularly inefficient. E.g., it costs 10 to move 10, and 10 REP is destroyed. So conscious effort is required to reweight the Forum to correct past mistakes. This effort requires the sacrifice of 10 REP on the part of those who make the change (the 10 REP from Post3 was governance value).
 
However note that in this case, the 10 REP "sacrifice" will not burden any particular member to achieve the revaluation, if it is done in concert with the governance tax. In this case the governance tax is free since the total amount of REP in the DAO before and after the revaluation is unchanged, because the excess governance tax is incinerated.
 
==== Proposal to affect multiple posts in the same manner ====


==== Proposal to affect multiple posts in different manners ====
Combining several of the above examples gives governance proposals that can express more complicated intentions of the will of the [[DAO]] to revaluate its past REP distribution.


==== Proposal to punish postK by slashing its REP, but not affect the posts it references ====
== Forking and merging DAOs ==
(The imagined context is that the owner of postK violated a tenet of the DAO so we want to punish them, but we don't specifically disagree with the actions and consequences of the particular postK-- we just want to take away their REP without punishing anyone else who was historically involved in the work that led to the creation of REP associated with postK.)
The way to create hard forks and mergers (i.e., divergence and convergence, i.e., [https://www.frontiersin.org/articles/10.3389/fhumd.2021.641731/full dissensus] and consensus) in DGF would be through Forum post reference mechanisms and the Validation Pool.  


Answer: slash postK and simultaneously donate the same amount to its positive references.
Say person1 creates a new type of REP, call it nREP, by sending a fee to the Validation pool associated with his nPost without referencing any existing post with REP. Now person1 could have been a member of an old 1REP DAO supposing they owned some 1REP. That means person1 made a hard fork from 1DAO to nDAO. That's divergence. That's dissensus.


==== Proposal to reward postK but not any of its references (inverse of previous.) ====
Then when another person with old REP1 cites nPost with 1REP, that means she gives some 1REP to nPost. That means nPost is re-admitted to 1DAO. That's consensus. That's convergence.


==== Proposal to create a bounty ====
The bounty can then be leached by an approved claimant. The bounty promise can be fulfilled before or after the approved claimaint leaches from it.


This example shows how some of the specific instantiations of governance proposals can be convoluted because we rely on basic primitives. However the completeness of the primitives guarantees any logical process desired has a rigorous solution.
Alternatively, there is another type of divergence that happens naturally in the function of DGF, which is simply referencing different posts. When you reference one chain, but not another, then you are strengthening a subset of the DAO and not the complement of that subset. So you are creating divergences just by moving forward in time.


== Completeness ==
== Completeness ==

Latest revision as of 17:02, 13 June 2023

The reference mechanisms which support the judicial governance process of reweighting the Forum WDAG under DGF are leaching and donating. Combined with an incinerator function, these primitives are complete, in the sense that using only those functions, any possible Forum WDAG can be re-weighted in any way desired.

Complex combinations of these primitives give sophisticated governance mechanisms for reviewing past actions recorded in the Forum.

Primitives[edit | edit source]

Forum references allow review. The Forum is a collection of posts (comments, proposals, work evidence, etc.), each one potentially having a set of references to older posts. As such the Forum is a DAG (directed acyclic graph), since the posts are nodes in the graph, and references are directed edges between posts. The Forum graph is acyclic, since older posts cannot reference newer posts. The Forum is weighted by the REP that each post earns during the REP Token Minting Mechanism stage and the strength of each edge reference. The Forum is reweighted every time a new post is added, allowing a decentralized means of review.

Donating, leaching, and incinerating are primitives of all possible reference mechanisms. They are complete in the sense that any complicated type of revaluation mechanism can be achieved by combining these three primitives in series.

Donating[edit | edit source]

??A donation is also called a positive citation or a positive reference.

Donating reference code[edit | edit source]

Main page: Donating reference code

Leaching[edit | edit source]

??Leaching is also called negatively citing or negatively referencing.

Leaching reference code[edit | edit source]

Main page: Leaching reference code

Incinerator[edit | edit source]

The incinerator is an account which permanently destroys any REP value sent to it. The REP sent to an incinerator does not collect fees from the REP salary.

Incinerator code[edit | edit source]

Main page: Incinerator code

Complex operations[edit | edit source]

Combining primitives gives more complicated operations.

Leach-donate[edit | edit source]

A post may simultaneously leach and donate to another post. It is important to note that the order in which the references are executed matters. By default, a post with both leaching and donating references executes leaching first and donating second, though this can be reversed by fiat.

If there are several leaching references, it is also important to note that the order in which the leaching references are executed matters – switching the order of execution may change the outcome. This non-commutativity arises because the order of references in time is different. For example, suppose post3 leaches from an older post1 first, then leaches from a newer post2 which has already leached from post1, then you get a lesser result for post3 than when the order is reversed.

Swap value from one post to another[edit | edit source]

Reweighting the Forum
Reweighting the Forum


The figure displayed illustrates a scheme for redistributing power from Post1 to Post2.

In this case we can imagine governance concluding that Post1 was bad and Post2 was good. Then governance makes Post3 with power 10 REP and validates it. Then in the displayed example the Forum WDAG has been revaluated, i.e., re-weighted. This is the primitive that allows governance to review previous judgements and correct mistakes made in the past. The incinerator is a complication that allows this re-weighting action to keep the total graph weight constant.

This isn't the only way to achieve re-weighting. Every approach has its own advantages and disadvantages. This approach encourages stability because it is particularly inefficient. E.g., it costs 10 to move 10, and 10 REP is destroyed. So conscious effort is required to reweight the Forum to correct past mistakes. This effort requires the sacrifice of 10 REP on the part of those who make the change (the 10 REP from Post3 was governance value).

However note that in this case, the 10 REP "sacrifice" will not burden any particular member to achieve the revaluation, if it is done in concert with the governance tax. In this case the governance tax is free since the total amount of REP in the DAO before and after the revaluation is unchanged, because the excess governance tax is incinerated.

Chains of references[edit | edit source]

Donation and leaching are not perfectly symmetric. By default, a chain of posts which all donate will recalculate the values of the posts down the chain when a new donating post is added to the chain. However, a leaching post only affects the value of the post it references – value changes from leaching do not propagate down the chain.

For example, suppose postK at time has value . If post1 with initial value donates 0.5 to post0, and post2 donates 0.7 to post1, then at time 2 we have and . So at time 2 the value from post2 flows down through post1 to post0.

However, a post which leaches does not propagate down the chain. It only leaches value from the post it references, which does not affect any ancestors of the object post. For instance, continue the example in the previous paragraph, adding post3 which leaches with strength -0.4. Then we get and assuming the initial value of post3 is smaller than . The other post0 and post1 do not change value with the addition of post3.

If the DAO wishes to leach value from several posts, it must make separate leaching references to each one.

Leaching from a leaching post[edit | edit source]

?? Add the following examples from Ladd's work at https://dgov.io/

Leaching from a weaker leaching post[edit | edit source]

Redistribute power[edit | edit source]

Redistribute power through subsequent support[edit | edit source]

Destroy a post after it has received positive citations[edit | edit source]

Initially zero-valued posts later receive citations[edit | edit source]

Negatively cite a zero-valued post[edit | edit source]

Correct a previous post which was leached[edit | edit source]

Judicial governance proposals[edit | edit source]

Main page: Judicial governance proposal

Combining several of the above examples gives governance proposals that can express more complicated intentions of the will of the DAO to revaluate its past REP distribution.

Forking and merging DAOs[edit | edit source]

The way to create hard forks and mergers (i.e., divergence and convergence, i.e., dissensus and consensus) in DGF would be through Forum post reference mechanisms and the Validation Pool.

Say person1 creates a new type of REP, call it nREP, by sending a fee to the Validation pool associated with his nPost without referencing any existing post with REP. Now person1 could have been a member of an old 1REP DAO supposing they owned some 1REP. That means person1 made a hard fork from 1DAO to nDAO. That's divergence. That's dissensus.

Then when another person with old REP1 cites nPost with 1REP, that means she gives some 1REP to nPost. That means nPost is re-admitted to 1DAO. That's consensus. That's convergence.


Alternatively, there is another type of divergence that happens naturally in the function of DGF, which is simply referencing different posts. When you reference one chain, but not another, then you are strengthening a subset of the DAO and not the complement of that subset. So you are creating divergences just by moving forward in time.

Completeness[edit | edit source]

A set of reference primitives is complete if any finite WDAG can be changed into any other finite WDAG through a finite series of new posts. (Equality of WDAGs here is measured by weights. A WDAG which includes a post with 0 REP value is equal to a WDAG that deletes that post.)

The single mechanism of simultaneous donation and leaching is complete when combined with the incinerator mechanism, as we now demonstrate.

Proof of completeness:

Given post1 with weight W1 we can reweight it to any other weight W by creating post2 which donates to post1 if W1 < W or leaches from post1 if W1 > W. If leaching is required, post2 simultaneously donates to the incinerator with strength 1. Thus post2 ends with 0 REP value.

This is not the end of the proof, since other posts in the sub-DAG of referenced ancestors are now changed, as well as the set of descendants affected by leaching from post1. We need to balance all the changes so that the leaching and donating processes affect the entire DAG correctly. We will need to solve a system of linear equations in order to find the right reweighting.

To organize the process, first note that any DAG can be given a total order. Since our Forum is a finite WDAG, we can define a Layer 0 consisting of all the roots of the DAG, i.e., those posts with no ancestors, i.e., those posts which have no references going out, but only references possibly coming in. Layer 1 is the set of all posts which reference out only to Layer 0 posts. Layer 2 posts are those which have references out to Layer 1 and possibly Layer 0. Inductively, Layer posts are those which reference posts in Layer and possibly Layer for any .

We now work inductively on layers. The posts in Layer 0 may be reweighted without difficulty by leaching or donating. The posts in Layer 1 can be reweighted, but any change in such a post must also reweight any post from Layer 0 that is referenced. To do this we solve the following linear equation:

??mathy matheta MATH-a math-math??

End proof.

Alternate primitives[edit | edit source]

Absolute redistribution bounded by the value of a post[edit | edit source]

Another complete set of primitives exist which are more restrictive. For example, an even more restrictive governance protocol would only allow the sum of absolute values of redistribution to be less than the value of a post. In this case, for instance, a DAO would use Post3 to only leach 10 and incinerate it. Then a Post4 is required to donate 10 to Post2. With this restriction it would take 20 REP and two posts to achieve the same redistribution that 10 REP completes with one post as demonstrated in the previously displayed figure.

This same limitation could be enforced under the previous hard protocol primitives by instituting a soft protocol requiring it in all posts. Therefore we consider the previous primitives as a better default for DAO governance.

Governmental fiat[edit | edit source]

Consider another system that a DAO may choose is much less inefficient, but also less stable. We can alternatively program primitives that give governance complete control by fiat. Specifically, a DAO may choose to make a primitive which allows any redistribution desired without any cost in REP. In this case, as long as an arbitrary redistribution was validated it could be achieved if the DAO allowed that primitive.

In general, this is much more dangerous than the previous examples of primitives, because one validated post could put all the value of the entire WDAG into any new account the poster wishes. However, it would be extremely efficient if the DAO wishes to move quickly and trusts its governance.

Applications[edit | edit source]

See Also[edit | edit source]

Notes & References[edit | edit source]