You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, IFeeCalculator is too rigid for the amount of work it does and is difficult to adapt to potential issues.
IFeeCalculator.Calculate only takes in IAction as an argument, making it necessary to manage base fees separately if desired.
Modifying IFeeCalculator would alter the results of previous blocks.
IFeeCalculator being an interface forces unnecessary implementation of unused classes.
Information necessary for calculating base fees, etc. is difficult to include in IFeeCalculator as ActionEvaluator calling IFeeCalculator cannot access the chain.
Moreover, the fee collection through IFeeCalculator is implemented inside ActionEvaluator, resulting in the following problems:
It is unknown whether fees can actually be collected during the GatherTransactionToPropose() stage.
ActionEvaluator implicitly causes state transitions other than executing actions.
Goals and Proposal
IFeeCalculator
Goals
IFeeCalculator contains more diverse information, and is called through IVariableFeeCalculator to select the proper IFeeCalculator for the block index.
This proposal suggests a refactoring of the current IFeeCalculator and IFeeCollector interfaces to make them more flexible and adaptable to potential issues.
문제 인식
현재 IFeeCalculator 는 너무나도 하는 일에 비해 경직되어 있고, 여러 일어날 수 있는 문제에 대해 대응하기 어렵습니다.
IFeeCalculator.Calculate 는 IAction 만을 인자로 받고 있어 base fee 등을 넣고 싶다면 따로 관리해야 합니다.
IFeeCalculator 를 수정하게 되면 이전 블록의 연산 결과가 달라지게 됩니다.
IFeeCalculator 가 인터페이스로 되어 있어, 필요 없는 구현체 구현을 강제하고 있습니다.
IFeeCalculator 가 불리는 ActionEvaluator 에서는 체인에 접근할 수 없어 base fee 등을 계산하기 위한 정보를 넣어주기가 어렵습니다.
또한, IFeeCalculator 를 통한 요금 징수 부분이 ActionEvaluator 안쪽에 구현되어 있어 다음과 같은 문제가 있습니다.
요금이 실제로 징수 가능한지 GatherTransactionToPropose() 단계에서 알 수가 없습니다.
ActionEvaluator 가 Action을 실행하는 것 이외에 다른 상태 전이를 암시적으로 일으킵니다.
목표 및 제안
IFeeCalculator
목표
IFeeCalculator 가 더 다양한 정보를 담고 있고, 이를 IVariableFeeCalculator 를 통해 블록 인덱스에 맞는 IFeeCalculator 를 호출하는 형태를 가집니다.
(영어 이후에 한국어가 따라옵니다.)
Problem Statement
Currently,
IFeeCalculator
is too rigid for the amount of work it does and is difficult to adapt to potential issues.IFeeCalculator.Calculate
only takes inIAction
as an argument, making it necessary to manage base fees separately if desired.IFeeCalculator
would alter the results of previous blocks.IFeeCalculator
being an interface forces unnecessary implementation of unused classes.IFeeCalculator
asActionEvaluator
callingIFeeCalculator
cannot access the chain.Moreover, the fee collection through
IFeeCalculator
is implemented insideActionEvaluator
, resulting in the following problems:GatherTransactionToPropose()
stage.ActionEvaluator
implicitly causes state transitions other than executing actions.Goals and Proposal
IFeeCalculator
Goals
IFeeCalculator
contains more diverse information, and is called throughIVariableFeeCalculator
to select the properIFeeCalculator
for the block index.Proposal
IFeeCalculator
has the following interface.IVariableFeeCalculator
has the following interface.IFeeCollector
Goals
IFeeCollector
verifies whether fees can be collected throughIFeeCalculator
-derived FAV, and performs the following actions:ActionEvaluation
.Proposal
IFeeCollector
has the following interface.Conclusion
This proposal suggests a refactoring of the current
IFeeCalculator
andIFeeCollector
interfaces to make them more flexible and adaptable to potential issues.문제 인식
현재
IFeeCalculator
는 너무나도 하는 일에 비해 경직되어 있고, 여러 일어날 수 있는 문제에 대해 대응하기 어렵습니다.IFeeCalculator.Calculate
는IAction
만을 인자로 받고 있어 base fee 등을 넣고 싶다면 따로 관리해야 합니다.IFeeCalculator
를 수정하게 되면 이전 블록의 연산 결과가 달라지게 됩니다.IFeeCalculator
가 인터페이스로 되어 있어, 필요 없는 구현체 구현을 강제하고 있습니다.IFeeCalculator
가 불리는ActionEvaluator
에서는 체인에 접근할 수 없어 base fee 등을 계산하기 위한 정보를 넣어주기가 어렵습니다.또한,
IFeeCalculator
를 통한 요금 징수 부분이ActionEvaluator
안쪽에 구현되어 있어 다음과 같은 문제가 있습니다.GatherTransactionToPropose()
단계에서 알 수가 없습니다.ActionEvaluator
가 Action을 실행하는 것 이외에 다른 상태 전이를 암시적으로 일으킵니다.목표 및 제안
IFeeCalculator
목표
IFeeCalculator
가 더 다양한 정보를 담고 있고, 이를IVariableFeeCalculator
를 통해 블록 인덱스에 맞는IFeeCalculator
를 호출하는 형태를 가집니다.제안
IFeeCalculator
가 다음과 같은 인터페이스를 가집니다.IVariableFeeCalculator
는 다음과 같은 인터페이스를 가집니다.IFeeCollector
목표
IFeeCollector
는IFeeCalculator
를 통해 얻어 진 FAV를 가지고 다음과 같은 일을 수행합니다.ActionEvaluation
을 반환합니다.제안
IFeeCollector
는 다음과 같은 인터페이스를 가집니다.The text was updated successfully, but these errors were encountered: