/
Breakout session: cost model
Breakout session: cost model
April 2018 developer's conference
Questions addressed
|
Participants
- Joseph Denman (moderator)
- Nash Foster
- Kyle Butt
- Bill Willahan
- Jamie Cook
- Jake Gillberg
- Dan Connley
- Mirnal Manohar
- Kevin Valentine
- ?
- Eitan
- Kelly Foster (scribe)
Regions and impact on costing
If east costs more than central, and
If there are more validators in a region, then it would cost more to operate in that region
IS there a concept of the number (min and max) of the validators in a region?
How do you split out rewards to the validators?
PROPOSAL: Distribute rewards evenly (or even stake-weighted) to validators
- Problem: Free-riding:
CONCERN: What if a validator turns on and off every 45 seconds, and then they get rewards (free-riding)
- Free rider is a validator who watches the results of other validators and says they did it to get the reward
This problem is not unique to RChain. It is a problem that needs to be solved.
IDEA - TSA solution: To solve for an inattention problem, TSA inserts knives into bags that are not there.
- Insert a bogus transaction to force the network to ID, those who validate are free-riders
- IDEA - The abusive boyfriend protocol
- You know there are lies out there, if you sign something without checking it, then you are a free-rider
- This is part of the consensus protocol
- IDEA - Rewards are only distributed after the block is finalized. If you're block is not doing anything, then no rewards for you "Little Red Hen" concept
Ways to make REV
- Inflation
- Validation fees
How and when do fees change?
- Cost of storage
When is the measure of the namespace determined? How is it established?
- ANSWER: It is determined by the region (the sum of measure of the regions) determined by the genesis block.
- Regions establish the cost measures
- Why can't it be the namespace?
- Example: namespaces could come up with a costs model (A v B), but then C wants to join
- ANSWER: This is prohibitive because it would require storage at the top
- It is important that the measures of the regions don't change frequently because it will impact trust
- You want namespaces that are in a federated, competitive market
- You may decide to trade slowness for safety
- You may decide to trade fastness for insecurity
- What we want from the network is to have both extremes in the network
How is rent distributed?
- Costs increase as safety goes up
- Ideal is to find a place in the middle where the least achievable amount of safety is allowed.
What's the difference between a region and a namespace?
- Nothing
- A region is the smallest version of a namespace
- This makes top-level transactions very expensive
- It's cheaper to interact with your trusted network
- Introduces competition based on cost (market economics)
Should validators decide costs by region?
- Should there be a default for the region?
- Regions determine costs, not namespaces
Contract mobility and region fee-setting
- How do you move a contract from region 1 to region 2?
- What if a region becomes a cartel?
- Can validators in a region alter the price?
- There is a dis-incentive because no one will want to join
- But the ones stuck there will be held hostage
- The solution is that to become a validator you have to be approved at the top level.
- Local price information is published globally
- You need agreement globally to change the price regionally
- Are costs determined by humans?
- Humans establish the region and standards and push for global consensus
- Then the market can choose to participate in the region or not
- If a region can identify a region that is a cartel, you can set a standard not to process those transactions. You can set the stand
- How much would Target spend to underprice Walmart?
- You want everyone to lower the price as much as possible to encourage transaction volume (like multiple fast food locations at a single intersection)
If 2 '@foo' contracts are deployed simultaneously, how is it determined which contract points to which wallet
- ANSWER - When you deploy something there is a wallet in the same message, so you just pass the wallet
What happens when a contract runs out of Phlo?
- The block records what has happened so far and add a notice that it's out of phlo
- The network would store a record (a try) of contracts that ran out of phlo
- Hash the computation and store the effect as a record in a log of contracts that ran out of phlo
- Need to avoid replay attacks, where more than one person adds phlo to refuel the contract
OPTION A - Storage
- As time goes on the number of effects you have to keep track of more and more
- You do have to keep track of what has been revived - this is the tricker part, trickier than reviving
- What data structure would you use to track?
- A complete try leaves a hole, which results in rewriting the try
Option B - Running to quiescence
- Runs until there is nothing left to run
- Allows you to track when you're done
- It doesn't have to be sequential
- Kyle advocates to not run code that creates multiple races
- The network will decide who wins what race
- Could create slowness on the network
- If you don't want to slowness due to resourcing for race designs, then don't write code like that. Suggestion is to write it differently.
- Is it expensive and slow for the person writing it or for the validators?
- Could create slowness on the network
- The network will decide who wins what race
- If running to quiescence then, one validator decides the race
- Race winners are fair. They are just non-deterministic
- If you want fair, write better code
- Example: Network has 100 validators, you opt for validation from three.
- Transaction sent to 3 with a bunch of serial races, each validator calculates a trace and broadcasts to the network, the network decides the winner
- No single actor knows which one will be selected as the winner (it's safe and not fair)
- You deploy and pay for all computation until it reaches quiescence
- This disincentives others for writing on the platform (ex data feed will be expensive)
- Nash, don't do this because no one will write an oracle if this is the case (required to run to quiescence)
- Joe proposes deployer pays. If you invoke someone else's contract, you pay for it.
- This is Kyle's recommendation
Does phlo persist from block to block during a computation?
- Deploy (P) and Deploy (Q) exist and don't overlap overlap in the tuplespace.
- Henry needs to know this as it relates to storage
- We want to be able to persist code is such a way that when someone runs it you continue paying
- What happens when the cost of running a contract fluctuates?
- The phlo-balance-pointer solves for this
- Deployer pays until quiescence
- Mike wants I want to send data and not pay for it
- Think about each term of a contract being it's own tiny contract
- Would people have phlo wallets?
- No. You don't get phlo back if it runs to quiescence
- If there is any phlo let at the end of all your reductions, then you get change
- Incentivizes running the contract to completion
- Storage layer keeps a reference counter. If phlo not zero, then give change.
- If your code produces things in another namespace, your reference count remains 1 until you hear back from the other namespace that they've reached quiescense
- Your phlo number would have to be synced across namespaces if contract is run across namespaces
How does rent work?
- Example, chess clock. Timed when contract is in the tuplespace, timed when contract is being executed. Rent is being charged when you're not running
Related content
20180415 Dev conference day one
20180415 Dev conference day one
More like this
2018-06-22 Validator Economics Meeting notes
2018-06-22 Validator Economics Meeting notes
More like this
2018-06-26 Validator Economics Meeting
2018-06-26 Validator Economics Meeting
More like this
2018-06-25 Validator Economics Meeting
2018-06-25 Validator Economics Meeting
More like this
2019-02-20 Meeting notes: validation and Casper
2019-02-20 Meeting notes: validation and Casper
More like this
2018-03-12 Meeting notes: April dev conference agenda planning
2018-03-12 Meeting notes: April dev conference agenda planning
More like this