Skip to content
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

Distributedのログに表示されるrewardの値が_amounts[index]+ minimumRewardPerReporterにならないケースがある #18

Open
yudetamago opened this issue Jul 6, 2019 · 4 comments

Comments

@yudetamago
Copy link

yudetamago commented Jul 6, 2019

distributeではレポート未提出者の場合には基本的に処理がスキップされて報酬0になるので、rewardが_amounts[index]+ minimumRewardPerReporterにならないケースがあるけどこれは意図通り?

異なるケースの例:
例えばrequestが

minimumReward = 0
deposit = 10

reporters: AとBの2人
A: (applyだけして)レポート未提出
B: レポート提出済

とする。
このときに

_amounts = [10000000000000, 10, 0, 0, ...(中略)..., 0]

を指定してdistributeすると

log.Distributed(uuid, Aのアドレス, 0)
log.Distributed(uuid, Bのアドレス, 10)

というログが出てきそう

@etaroid
Copy link
Contributor

etaroid commented Jul 9, 2019

・frontにはvalidationがあるので前提としてcontractを直接ぶっ叩かれた時の話
・depositされている額が10000000000010だとする
・reportを提出しているのはB一人、Aはapplyだけしているとする
・この時、Aに10000000000000、Bに10の報酬をdistributeするというリクエストを投げた場合に、
assert self.requests[_uuid].deposit == total + self.requests[_uuid].minimumReward
は通過してしまう

・その後の

if self.requests[_uuid].reports[index] == EMPTY_BYTES32:
            continue

で実際のdistribute送金はBに10しかされないが、statusがisCompletedになってしまうため、
10000000000000のETHはコントラクトに残ってしまうことになる。

ということですか?:bow:

@yudetamago
Copy link
Author

yudetamago commented Jul 9, 2019

submitしてない人はtotalの計算に含まれないので、depositは10じゃないとバリデーションに通らないんじゃないかなと思うですがどうでしょ…?
コントラクト上だと「applyだけした人に(amountで任意の値を指定しても)0の報酬が支払われている」というログが出てくるようなケースがあって、ちょっと違和感があるという程度の認識です 🙇

@etaroid
Copy link
Contributor

etaroid commented Jul 9, 2019

なるほど!
「Applyだけした人に対して0送ったよ!」というログって要らなくね?
ってことですね!

@yudetamago
Copy link
Author

それだ、最初からそう言うべきだった…mm
です!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants