Question about two ways to add built-in actions that need to be executed every block #2301
Replies: 2 comments
-
Actions are like opcodes for the blockchain state machine. In other words, they are intended to have some operands, and give users a choice to opt in/out them inside the shared state machine. However, if a state transformation should be common and deterministic (i.e., users have no choice on operand values or whether opt in or out the transformation) it doesn't have to be an action. (That's why To me, it's more natural to implement such state transformation inside |
Beta Was this translation helpful? Give feedback.
-
해당 안은 #3119 에서 비슷한 논의를 이어 하고 있습니다. |
Beta Was this translation helpful? Give feedback.
-
DPoS로의 전환 중, 매 블록의 종료 시마다 실행해야 하는 액션이 존재합니다. 이 액션은 각종 상태에 따라 보상을 분배하거나, 대상을 처벌합니다.
이 기능을 구현하는 데 있어 방법이 두 가지가 있습니다.
ActionEvaluator<T>.Execute()
에 직접 구현해 넣는다.ActionEvaluator<T>.SystemBlockAction
필드를 만들고 여기에 액션을 등록한 뒤ActionEvaluator<T>.Execute()
에서 호출한다.1, 2번 모두 기능 호출은 이 곳에서 하려고 합니다.
libplanet/Libplanet/Action/ActionEvaluator.cs
Lines 109 to 121 in 2339d10
혹시 있다면 1, 2번 안 이외에 다른 의견도 듣고 싶습니다.
Beta Was this translation helpful? Give feedback.
All reactions