New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recoverability #23

Open
shogochiai opened this Issue Aug 5, 2018 · 3 comments

Comments

Projects
None yet
2 participants
@shogochiai
Copy link
Contributor

shogochiai commented Aug 5, 2018

Our biggest risk is GOX of unproxiable staking protocol subpool.

Will recoverability mitigate that risk? Or, money loss isn't fundamentally unrecoverable?

@syuhei176

This comment has been minimized.

Copy link
Member

syuhei176 commented Aug 5, 2018

Unproxiable staking protocol subpool is depend on old trust model and that is far from cryptoeconomics. This step on the way to proxiable staking protocol.
Money loss isn't fundamentally unrecoverable, because there are no alternatives of money.

@shogochiai

This comment has been minimized.

Copy link
Contributor

shogochiai commented Aug 5, 2018

Suicide Attack is likely happen when isSuicidable && isAttackerInsane === true.

But if defendable_epoch > attackable_epoch then attack won't happen because suicider knows "I can't win to this 'Regen'-ing monster."
regen

This design is important.


const ATTACKER_BUDGET: nat
const DEFENDER_BUDGET: nat
const ATTAKER_COST_PER_ATTACK: nat
const ATTCKER_ESTIMATED_PROFIT_PER_ATTACK: nat
const DEFENDER_COST_PER_RECOVERY: nat

let attacker_profitablity_per_attack: int = ATTCKER_ESTIMATED_PROFIT_PER_ATTACK - ATTAKER_COST_PER_ATTACK
let attackable_epoch: nat = ATTACKER_BUDGET/attacker_profitablity_per_attack
let defendable_epoch: nat = DEFENDER_BUDGET/DEFENDER_COST_PER_RECOVERY

let isSuicidable = attacker_profitablity_per_attack < 0

let isAttackerInsane: bool
let doAttack: bool

if (isSuicidable) {
  if (isAttackerInsane) {
    // Suicide Attack
    doAttack = attackable_epoch > defendable_epoch
  } else {
     // We strongly hope this condition
     doAttack = false
  }
} else {
  // Normal Attack
  doAttack = true
}

if (doAttack) {
  if (isSuicidable) {

   // "doAttack = attackable_epoch > defendable_epoch"
    defendable_epoch.times {
      DEFENDER_BUDGET--
      ATTACKER_BUDGET--
    }
    
    reject("Network paralysed and token price dumped!")

  } else {
    ATTACKER_BUDGET++

    // Because of exchange of shops confirmation raise
    ATTCKER_ESTIMATED_PROFIT_PER_ATTACK--

    // More security as time goes by
    ATTAKER_COST_PER_ATTACK++

    reject("Double spend of something happened.")
  }

} else {
  // We hope this peaceful condition

  resolve("Epoch has been executed peacefully :) ")
}

@syuhei176

This comment has been minimized.

Copy link
Member

syuhei176 commented Aug 5, 2018

Are there any example of this code? (ex Plasma

I think isSuicidable is always true in the recoverable system, is it correct?

AttackProfitRate = ATTCKER_ESTIMATED_PROFIT_PER_ATTACK / ATTAKER_COST_PER_ATTACK

And I think high recoverability is low AttackProfitRate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment