taxemes in detail — a conversation
--
UPDATE:
progress in the past week →
Conversation between inventor and developer
johan.nygren9 [3:39 AM] i’ll give $300 to whoever builds a contract for this,https://medium.com/@resilience_me/using-a-genetic-algorithm-for-self-organising-emergent-tax-rates-in-a-crypto-basic-income-system-fbb9d60ba7fa, the tax-money could go to a fund that’s controlled by trusted people in the ethereum community, and they could then invest it based on what the community wants
a proof-of-concept
Medium
using a genetic algorithm for self-organising emergent tax-rates in a crypto basic income system
proposed replicator: “taxeme”
(edited)
johan.nygren9 [5:54 PM] “If my genetic algorithm idea works, then that might be _the first decentralised model for wealth redistribution_. These “taxemes” could control more then just basic income tax, you could potentially code your taxeme to redistribute 2% to UBI and 3% to some healthcare-dApp and 1% to some city planning dApp. The most successful taxemes will shape the ‘Resilience’ redistribution machine, and human consumers will be able to use *taxemes* to influence how wealth is redistributed in the DAO economy.”
jeffreybpetersen [11:25 PM] joined #general
jeffreybpetersen [11:38 PM] I’d be interested in putting together the contract. Think you can get me up to speed on all the algorithmic details?
:heart:1:simple_smile:1
— — -
November 6th
— — -
johan.nygren9
[12:46 AM]
Uploaded an image: algorithm
johan.nygren9 [12:51 AM] @jeffreybpetersen: that would be amazing. can you make out the details from this image ?
jeffreybpetersen [1:06 AM] Let me check: To start each node defines their personal taxeme by setting a value that indicates a tax rate.
johan.nygren9 [1:06 AM] yup
johan.nygren9[1:06 AM]they can change it at any time
jeffreybpetersen [1:06 AM] When a node participates in a transaction, how does the inheritance work?
johan.nygren9 [1:07 AM] passed down to you (edited)
johan.nygren9[1:07 AM]and stores the amount you transacted
jeffreybpetersen [1:07 AM] Passed to you by all the other participants in the transaction?
jeffreybpetersen[1:09 AM]If I had a taxeme of 10% and you had a taxeme of 50%, and we made a transaction, then what would happen?
johan.nygren9 [1:10 AM] if I sent a transaction to you for 2 ETH, i’d inherit your 10% taxeme and it would store an integer with the transaction amount, 2 ETH
johan.nygren9[1:11 AM]i would then have 2 taxemes, my 50% and your 10%
johan.nygren9[1:11 AM]the 10% taxeme would be dominant
jeffreybpetersen [1:11 AM] So a taxeme conceptually consists of a rate and a list of transactions?
johan.nygren9 [1:13 AM] when a third person sends a transaction to me, it would be taxed by the dominant taxeme, and they would inherit the 10% taxeme
jeffreybpetersen [1:13 AM] Is the inherited taxeme defined by which is dominant or which is lowest?
johan.nygren9 [1:14 AM] both, the lowest is the dominant
jeffreybpetersen [1:14 AM] Ah, ok.
jeffreybpetersen[1:15 AM]So taxemes work strictly with 2 party transactions of something with taxed value for something else?
jeffreybpetersen[1:15 AM]In this case the taxed value being Ether.
jeffreybpetersen[1:18 AM]And inheritance is always from the party receiving the taxed value to the party sending it?
johan.nygren9 [1:18 AM] yes, it’s passed down from the receiver to the sender
jeffreybpetersen [1:19 AM] And then if you ever exhaust your set of taxemes you default back to your personal taxeme?
johan.nygren9 [1:19 AM] yes
jeffreybpetersen [1:20 AM] And if you would ever inherit a copy of your personal taxeme then the copy is instead destroyed?
johan.nygren9 [1:20 AM] yes
jeffreybpetersen [1:20 AM] Ok, I’m trying to think if there’s anything I’m missing at this point.
jeffreybpetersen[1:20 AM]Ah, how does the taxing itself work?
johan.nygren9 [1:21 AM] it could be sent to a fund for now, like, just an address on the first draft
jeffreybpetersen [1:22 AM] When you make a transaction, is the tax rate that of the inherited taxeme?
johan.nygren9 [1:22 AM] of the lowest, always
jeffreybpetersen [1:23 AM] The lowest as held by both the sender and receiver or only one of them?
johan.nygren9 [1:23 AM] receiver
jeffreybpetersen [1:23 AM] So then it would be that of the inherited taxeme.
jeffreybpetersen[1:24 AM]Do you always hold a copy of your personal taxeme or can it be passed away and only reappear in your set of taxemes when your set is exhausted?
johan.nygren9 [1:24 AM] always hold a copy
jeffreybpetersen [1:25 AM] So any taxeme you would inherit that has an equal or greater rate than your personal taxeme is essentially destroyed. (edited)
johan.nygren9 [1:25 AM] its silent, dormant
jeffreybpetersen [1:26 AM] Is there any way for it to become active again?
johan.nygren9 [1:26 AM] you might change your tax-rate and they might become active again
jeffreybpetersen [1:26 AM] Ah, I didn’t think of that.
johan.nygren9 [1:26 AM] if you raise your tax-rate above that of the dormant inherited taxeme
jeffreybpetersen [1:28 AM] And then the taxes are always the proportion of transactions that the receiver pays to tax collection?
jeffreybpetersen[1:28 AM]As opposed to being an additional amount that the sender has to pay on top of the base transaction.
jeffreybpetersen[1:29 AM]Like if I paid you 2 ETH and you had a 50% taxeme active then you would get 1 ETH and 1 ETH would go to tax collections?
johan.nygren9 [1:30 AM] yes
johan.nygren9[1:30 AM]proportion is easiest
johan.nygren9[1:30 AM]both work
jeffreybpetersen [1:31 AM] I agree, it’s a lot more intuitive than typical taxes.
jeffreybpetersen[1:31 AM]Being able to forward taxes immediately does a lot to help simplify things.
jeffreybpetersen[1:32 AM]I think I’ve got the algorithm down for how taxemes work.
jeffreybpetersen[1:33 AM]I’m curious what your ideas are for managing the collected taxes in the long run?
jeffreybpetersen [1:42 AM] As well as on incentives to participate.
johan.nygren9 [1:48 AM] at this moment, i’d like to just test the taxeme framework, its a lot to process at once. the original plan was to use the tax for basic income, and to distribute it based on a *web of consumption*
jeffreybpetersen [1:53 AM] Ok, I know enough to put that much together.
jeffreybpetersen[1:53 AM]I’m interested in the details of how the web of consumption would work if you want to get into it.
johan.nygren9 [1:59 AM] it uses what i call *dividend pathways*,
https://www.youtube.com/watch?v=bxyjt2T_nLQ
dividend flow through them, sort of like electrical currents, and the pathways get used up as dividend flow through
jeffreybpetersen [2:05 AM] I’m guessing it works through creating a dividend pathway from the taxbase of a swarm to an individual who sends value into the swarm?
jeffreybpetersen[2:07 AM]And then the dividend pathways are essentially a capacity for total individually received payouts from collected taxes?
johan.nygren9 [2:09 AM] transaction tax is divided on everyone who has a dividend pathway connection. if I send you 2 ETH and your dominant taxeme is 10%, then 0.2 ETH is divided on lots and lots of people
jeffreybpetersen [2:11 AM] That would be among a set of people who have a dividend pathway specifically from me?
johan.nygren9 [2:11 AM] yes
johan.nygren9[2:12 AM]and those who have a dividend pathway from them, and those who have a dividend pathway from them
jeffreybpetersen [2:12 AM] How is the division proportioned?
johan.nygren9 [2:16 AM] the dividend pathways have a *weight*, Rp, a pathway made to someone who has a 2% taxeme has an Rp of 2%, and will be less conducive to dividend then a pathway with an Rp of 5%
johan.nygren9
[2:17 AM]
Uploaded an image: swarm-redistribution
jeffreybpetersen [2:19 AM] Which taxeme determines the weight? The taxeme active in the transaction that formed the pathway? The personal taxeme of the sender? The currently active taxeme of the sender?
johan.nygren9 [2:20 AM] the taxeme active in the transaction that formed the pathway
jeffreybpetersen [2:23 AM] So when you pay taxes you’d distribute them evenly by weight among all dividend pathways leading out from yourself?
johan.nygren9 [2:25 AM] think of it as running an electrical current through pathways with varying resistance. a pathway with 2% Rp that is down-streams from one with 1,5% Rp will receive the same current as the 1,5 % Rp did
johan.nygren9[2:25 AM](see animation)
jeffreybpetersen [2:26 AM] Ah, that explains it.
jeffreybpetersen[2:28 AM]What happens when there are multiple streams from A to B? Such as A to C to B and A to D to B?
johan.nygren9 [2:35 AM] A to C (or D) to B will block A to D (or C) from continuing to B
jeffreybpetersen [6:48 AM] I’m guessing you’d take the maximum of the two?
johan.nygren9 [8:09 AM] mm, path of least resistance
— — -
November 8th
— — -
johan.nygren9 [2:39 AM] @d11e9 @howardpmarks @jeffreybpetersen Vitalik commented on the genetic algorithm idea and said it was “moving in an interesting direction” :simple_smile:https://www.reddit.com/r/ethereum/comments/3rk0js/using_a_genetic_algorithm_for_selforganising/cwqu708
8 points and 6 comments so far on reddit
johan.nygren9[2:40 AM]@jeffreybpetersen: are you still up for coding the taxeme-concept ?
jeffreybpetersen [3:13 AM] I am :simple_smile:
johan.nygren9 [3:15 AM] wonderful ! :smile:
jeffreybpetersen [3:17 AM] One last question when it comes to implementing it, since there’s more than one way of sorting each set of taxemes, is a heap that selects for the minimum good by you?
johan.nygren9 [3:20 AM] a heap is good
jeffreybpetersen [3:28 AM] Any future optimizations should be able to port over taxemes from older implementations with a little extra code to talk to the older contract.
jeffreybpetersen[3:32 AM]Like the heap will have pretty regular gas costs whereas a radix sort could vary a lot depending on what kind of values people use.
jeffreybpetersen[3:34 AM]Namely it would cost a lot to have fine grained tax rates but could be cheaper for round numbers vs. a heap.
jeffreybpetersen[3:35 AM]Hard to tell without seeing it in use first…
jeffreybpetersen[3:36 AM]Should I make a public repo on GitHub for the contract and related details?
johan.nygren9 [3:36 AM] that would be great
jeffreybpetersen [3:36 AM] My account or under an org?
johan.nygren9 [3:37 AM] your account is good
jeffreybpetersen [3:58 AM] Just to check, you can have multiple copies of someone else’s taxeme at once?
johan.nygren9 [4:03 AM] yes. if multiple taxemes in the same tax-rate are inherited, its probably easier to model it as one taxeme and to add the transaction amount
jeffreybpetersen [4:03 AM] Right, I forgot about the transaction amounts.
jeffreybpetersen[4:04 AM]What are the records of the transaction amounts used for?
johan.nygren9 [4:07 AM] For when the taxeme is passed on to a new node. If I’ve inherited a 2% taxeme with the size of 100RES, and its my dominant taxeme, and you send me 50 RES, then you’ll inherit half of it, and i’ll still have a 2% taxeme with the size of 50 RES
jeffreybpetersen [4:11 AM] And then I’ve also got a 2% taxeme with 50 RES, or if I already has a 2% taxeme then it’s now 50 RES larger correct?
johan.nygren9 [4:12 AM] if you already had a 2% taxeme that originated from the same node as this 2% taxeme, then its added, otherwise, you get 2 different ones
johan.nygren9[4:13 AM]the taxemes have to be traceable to their origin nodes
jeffreybpetersen [4:14 AM] If you change your personal taxeme, then does that also change all copies of it?
johan.nygren9 [4:14 AM] not the copies that have been inherited by others
jeffreybpetersen [4:15 AM] Right, the taxemes need to be traced because they’re destroyed if they return to their origin.
johan.nygren9 [4:15 AM] yep
jeffreybpetersen [5:33 AM] If you have a 50 RES 2% taxeme and a 100 RES 3% taxeme and I send you a transaction of 100 RES then it would use the 2% taxeme for the first 50 RES and the 3% taxeme for the second 50 RES for an effective tax rate of 2.5% leaving you with a 50 RES 3% taxeme?
jeffreybpetersen[5:34 AM]And me with a 50 RES 2% taxeme and a 50 RES 3% taxeme.
jeffreybpetersen[5:37 AM]Trying to get at whether you continue to the next taxeme if the current lowest one is exhausted during a transaction.
johan.nygren9 [9:36 PM] yup, it continues to the next taxeme, leaving you with a 50 RES 2% taxeme and a 50 RES 3% taxeme.
— — -
Yesterday
November 9th, 2015 — — -
jeffreybpetersen [6:52 PM] If someone inherits multiple taxemes with the same rate, then in what order should they be passed on?
jeffreybpetersen[6:54 PM]FIFO?
jeffreybpetersen[6:58 PM]And I figure you’d like balances held under contract so that taxes can be easily enforced?
jeffreybpetersen [7:09 PM] Also, would you like support for tax rates above 100% and if so how would you like that handled in the case of an insufficient balance?
jeffreybpetersen [11:11 PM] I’m currently working out how to best encode the rates given the lack of floating point support in Solidity. I’m leaning towards a simplified implementation of floating point with a constant exponent, leaving all the bits for the mantissa (no sign bit either unless you want negative rates available). A very minor drawback would be the lack of a 100% tax rate, instead having the largest possible rate be 1–2^bits_in_mantissa (99.998% for 16 bits).
— — -
Today
November 10th, 2015 — — -
johan.nygren9 [1:03 AM] first in first out sounds good
johan.nygren9[1:03 AM]you are better then me at floating points and so on
jeffreybpetersen [1:15 AM] And keep the tax rates in the 0% to 100% range?
johan.nygren9 [1:17 AM] yup
jeffreybpetersen [1:22 AM] If my taxeme is set at 2%, and I inherit another 2% taxeme, then should the other taxeme remain dormant unless I raise my rate or should my taxeme be given minimum priority at the given rate?
jeffreybpetersen[1:25 AM]FIFO would imply the others remain dormant.
johan.nygren9 [1:31 AM] probably make the inherited taxeme dominant and yours given minimum priority, so personal taxeme is an exception in FIFO
— — -
November 11th
— — -
jeffreybpetersen [10:55 AM] Making steady progress so far, let me know anytime you’d like specific updates
:heart:1
Including if you want me to polish up whatever I’ve got at the moment and push it.
jeffreybpetersen [11:16 AM] An interesting property I came across is that it’s possible to treat everyone as a member of the system, where a lack of explicit participation is effectively a personal taxeme at 0%, and transactions must always be declared by the sender as otherwise anyone could force arbitrary taxemes onto anyone else so long as they’re willing to pay the associated tax costs.
— — -
Yesterday
November 12th, 2015 — — -
johan.nygren9 [1:56 PM] excellent
“An interesting property I came across is that it’s possible to treat everyone as a member of the system”
that’s been my intuition too
— — -
November 15th
— — -
jeffreybpetersen [1:04 AM] Does anything need to be tracked with individual inherited taxemes besides their creator, rate, and current size?
johan.nygren9 [11:05 AM] Not sure. This is the first time the framework is being tested. It might make sense to track the origin of a taxeme by logging how much of a particular taxeme a node has originated, in a particular tax-rate. That node will then collapse taxemes in those tax-rates.
johan.nygren9 [11:06 AM] uploaded an image: taxemes
johan.nygren9 [4:55 PM] instead of logging the creator of a taxeme, each creator logs what taxemes they have originated, and act as destructors for taxemes in those tax-rates
this increases the amount of turn-over for taxemes. the likelyhood that a specific taxeme will return to its creator is probably low, but the likelyhood that a taxeme of a specific tax-rate will return to someone who originated a similar taxeme would be much higher. higher turn-over seems like it would work better.(edited)
johan.nygren9 [5:15 PM] not sure why i didn’t mention this first, it’s a very complex system with many parts and it was probably conceptually easier to describe it as “creators of specific taxemes collapse taxemes that return to them” while i walked you through how the inheritance worked etc(edited)
jeffreybpetersen [11:10 PM] So with this change to the model, if someone creates X worth of a Y% tax rate, then they’ll collapse the next X worth of taxemes inherited that have a Y% rate?
Such as if my active rate is 5% (whether my own rate or a taxeme I inherited), and people inherit 100 ETH worth of that 5% rate from me, then the next 100 ETH of 5% that I inherit myself will be collapsed instead of passed on?
If I’m understanding it correctly then the net effect is proportionately reducing the size of taxemes as they’re passed on, specifically by half.
Since it’d be alternating between passing on a specific tax rate and collapsing it.
— — -
November 16th
— — -
johan.nygren9 [8:57 AM] only the original creator would act as a destructor. taxemes that are passed on would not count.
jeffreybpetersen [8:59 AM] So if I’ve created 100 ETH of 5% taxemes then I’ll collapse the next 100 ETH of 5% taxemes that I would’ve otherwise inherited?
jeffreybpetersen [9:06 AM] And forgo the previous collapsing upon return to origin?
johan.nygren9 [9:11 AM] probably. it might still be interesting to track the origin of a taxeme, to see how they spread, but this new model would replace the role of that in taxeme turn-over.