Skip to content

Instantly share code, notes, and snippets.

@jsyqrt
Created October 9, 2019 05:23
Show Gist options
  • Save jsyqrt/12bcb6d95964aa88f4422410762f7150 to your computer and use it in GitHub Desktop.
Save jsyqrt/12bcb6d95964aa88f4422410762f7150 to your computer and use it in GitHub Desktop.
tags
cpchain
rpt

Consider Impeach Status in Rpt

  • current rpt calculation method.
type RptService interface {
    CalcRptInfoList(addresses []common.Address, number uint64) RptList
}

func (rs *RptServiceImpl) CalcRptInfoList(addresses []common.Address, number uint64) RptList {
    rpts := RptList{}
    for _, address := range addresses {
        rpts = append(rpts, rs.CalcRptInfo(address, addresses, number))
    }
    return rpts
}

func (rs *RptServiceImpl) CalcRptInfo(address common.Address, addresses []common.Address, number uint64) Rpt {
    return rs.rptCollector.RptOf(address, addresses, number)
}

type RptCollector interface {
    RptOf(addr common.Address, addrs []common.Address, num uint64) Rpt
}

func (rc *RptCollectorImpl) RptOf(addr common.Address, addrs []common.Address, num uint64) Rpt {

    rpt = alpha*rc.BalanceValueOf(addr, addrs, num, windowSize) +
        beta*rc.TxsValueOf(addr, addrs, num, windowSize) +
        gamma*rc.MaintenanceValueOf(addr, addrs, num, windowSize) +
        psi*rc.UploadValueOf(addr, addrs, num, windowSize) +
        omega*rc.ProxyValueOf(addr, addrs, num, windowSize)

   return Rpt{Address: addr, Rpt: rpt}
}
  • consider impeach status, subtract some value according to impeach status.
func (rc *RptCollectorImpl2) RptOf(addr common.Address, addrs []common.Address, num uint64) Rpt {

    rpt = alpha*rc.BalanceValueOf(addr, addrs, num, windowSize) +
        beta*rc.TxsValueOf(addr, addrs, num, windowSize) +
        gamma*rc.MaintenanceValueOf(addr, addrs, num, windowSize) +
        psi*rc.UploadValueOf(addr, addrs, num, windowSize) +
        omega*rc.ProxyValueOf(addr, addrs, num, windowSize) -
        ...// impeach status here

   return Rpt{Address: addr, Rpt: rpt}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment