Computation Cost (Previous docs)
Klaytn은 1초 블록생성 시간을 목표로 하기 때문에 트랜잭션 실행 시간이 관리되어야 합니다. 이를 위한 3가지 접근법이 있습니다.
  1. 1.
    트랜잭션의 가스 한도를 제한합니다. 2. 트랜잭션의 실행 시간을 제한합니다. 3. 트랜잭션의 연산 비용을 제한합니다.
그러나, 가스 한도를 제한하는 것은 실현 가능한 해결책이 아닙니다. 블록체인 플랫폼에서 연산, 저장공간, 네트워크 대역폭 등 여러 자원의 교환 값을 나타내는 것이 가스의 개념이기 때문입니다. 따라서, 트랜잭션 실행 시간을 관리하기 위한 방법으로는 적합하지 않습니다.
트랜잭션의 실행 시간을 제한하는 것도 실현 가능한 해결책이 아닙니다. 실행 시간은 블록체인 플랫폼 내 노드에 따라 달라질 수 있기 때문입니다. 예를 들어, 트랜잭션 실행 시간을 100ms로 제한하는 경우를 고려해보겠습니다. 만약 한 노드에서 트랜잭션 실행 시간이 90ms고, 다른 노드에서 110ms라면 두 노드는 합의에 도달 할 수 없습니다. 그렇기 때문에 이 해결책은 적절하지 않습니다.
마지막 방법은 트랜잭션의 연산 비용을 제한하는 것입니다. 우리는 각 EVM 연산자(Opcode)의 연산 비용을 실제 실행 시간에 기반하여 모델링하고, 한 트랜잭션 연산 비용의 합계를 제한합니다. 이 접근 방식을 사용하면 다른 요소들을 제거하고, 정규화된 실행 시간만 계산하여 노드들이 합의에 도달 할 수 있습니다.
그렇기 때문에 우리는 Klaytn에 세번 째 방법을 선택했습니다. 현재는 실행 비용 한도는 100,000,000으로 설정되어 있습니다. 한도는 플랫폼에 의해 결정되므로 개발자들은 트랜잭션의 연산 비용을 알아야합니다. 트랜잭션의 연산 비용을 계산할 수 있도록 클레이튼은 klay_estimateComputationCost를 제공합니다. 사용법은 klay_estimateGas와 거의 같습니다.

Opcode의 연산 비용

아래 표는 EVM Opcode의 연산 비용을 보여줍니다. 연산 비용은 시뮬레이션을 통해 결정되었습니다.
참고: 이 문서에는 프로토콜 업데이트 적용 이전에 사용되던 연산 비용이 포함되어 있습니다. 최신 문서는 최신 문서를 참고해주세요.
Opcode
연산 비용
STOP
0
ADD
150
MUL
200
SUB
219
DIV
404
SDIV
739
MOD
812
SMOD
560
ADDMOD
3349
MULMOD
4757
EXP
5000
SIGNEXTEND
481
LT
201
GT
264
SLT
176
SGT
222
EQ
220
ISZERO
165
AND
288
OR
160
XOR
657
NOT
1289
BYTE
589
SHL
1603
SHR
1346
SAR
1815
SHA3
2465
ADDRESS
284
BALANCE
1407
ORIGIN
210
CALLER
188
CALLVALUE
149
CALLDATALOAD
596
CALLDATASIZE
194
CALLDATACOPY
100
CODESIZE
145
CODECOPY
898
GASPRICE
131
EXTCODESIZE
1481
EXTCODECOPY
1000
RETURNDATASIZE
10
RETURNDATACOPY
40
EXTCODEHASH
1000
BLOCKHASH
500
COINBASE
189
TIMESTAMP
265
NUMBER
202
DIFFICULTY
180
GASLIMIT
166
POP
140
MLOAD
376
MSTORE
288
MSTORE8
5142
SLOAD
835
SSTORE
1548
JUMP
253
JUMPI
176
PC
147
MSIZE
137
GAS
230
JUMPDEST
10
PUSH1
120
PUSH2
120
PUSH3
120
PUSH4
120
PUSH5
120
PUSH6
120
PUSH7
120
PUSH8
120
PUSH9
120
PUSH10
120
PUSH11
120
PUSH12
120
PUSH13
120
PUSH14
120
PUSH15
120
PUSH16
120
PUSH17
120
PUSH18
120
PUSH19
120
PUSH20
120
PUSH21
120
PUSH22
120
PUSH23
120
PUSH24
120
PUSH25
120
PUSH26
120
PUSH27
120
PUSH28
120
PUSH29
120
PUSH30
120
PUSH31
120
PUSH32
120
DUP1
190
DUP2
190
DUP3
176
DUP4
142
DUP5
177
DUP6
165
DUP7
147
DUP8
157
DUP9
138
DUP10
174
DUP11
141
DUP12
144
DUP13
157
DUP14
143
DUP15
237
DUP16
149
SWAP1
141
SWAP2
156
SWAP3
145
SWAP4
135
SWAP5
115
SWAP6
146
SWAP7
199
SWAP8
130
SWAP9
160
SWAP10
134
SWAP11
147
SWAP12
128
SWAP13
121
SWAP14
114
SWAP15
197
SWAP16
128
LOG0
100
LOG1
1000
LOG2
1000
LOG3
1000
LOG4
1000
PUSH
0
DUP
0
SWAP
0
CREATE
2094
CALL
5000
CALLCODE
4000
RETURN
0
DELEGATECALL
696
CREATE2
10000
STATICCALL
10000
REVERT
0
SELFDESTRUCT
0
Copy link