Caution
Klaytn에서 eth namespace API를 사용할 때의 주의사항입니다.
Last updated
Klaytn에서 eth namespace API를 사용할 때의 주의사항입니다.
Last updated
Klaytn은 eth
namespace APIs를 지원하며, 개발자들은 이더리움 기반의 SDKs 혹은 도구들을 사용하는 프로젝트를 쉽게 Klaytn으로 옮겨올 수 있습니다. (예를들어, 이더리움 도구의 엔드포인트 URL을 바꾸어 Klaytn node를 가리킬 수 있습니다.)
하지만 Klaytn과 Ethereum의 근본적인 디자인 차이가 존재하기 때문에, 몇몇 API들은 완전한 기능이 지원되지 않습니다. (예를들어, 몇몇 필드들은 항상 zero value를 가집니다.)
이 문서에서는 이러한 API들의 제한 사항들에 대해 설명합니다.
관련된 APIs: eth_getHeaderByNumber, eth_getHeaderByHash.
설명란의 을 자세히 읽으십시오.
설명란의 아이콘은 해당 필드가 이더리움과 동일하다는 것을 뜻합니다.
Ethereum 헤더 필드 | Klaytn 헤더 필드 | Description |
---|---|---|
관련된 APIs: eth_getBlockByHash, eth_getBlockByNumber, eth_getUncleByBlockHashAndIndex, eth_getUncleByBlockNumberAndIndex.
블록 헤더와 관련된 내용은 위에서 설명하였으므로, 해당 장에서는 블록 헤더를 제외한 블록 필드에 대해 설명합니다.
관련된 APIs: eth_getTransactionByHash, eth_getTransactionByBlockHashAndIndex, eth_getTransactionByBlockNumberAndIndex, eth_pendingTransactions.
Klaytn에는 많은 유형의 트랜잭션 타입이 있고, 데이터 구조의 필드는 유형에 따라 변합니다.
따라서 다양한 유형의 Klaytn 트랜잭션이 어떻게 Ethereum 트랜잭션으로 변환되는지 확인하여야 합니다. 몇몇 필드는 변환 과정 중 무시되거나 zero 혹은 더미 값으로 추가될 수 있습니다. 이는 변환 과정 중 일부 중요한 정보(클레이튼의 관점에서)가 손실된다는 것을 의미합니다.
본 문서에서는 EIP-2718 이전의 EthereumLegacyTransaction을 이더리움 트랜잭션 형식으로 정의하고 있음을 참고하십시오.
eth namespace JSON-RPC apis를 통해 Klaytn 트랜잭션들을 쿼리할 때, Klaytn 트랜잭션은 이더리움 기본 트랜잭션 형식으로 반환될 것입니다.
본 문서에서는 변환 과정을 상세히 기술합니다 (Klaytn 트랜잭션 -> 이더리움 기본 트랜잭션).
공통 영역은 다양한 Klaytn 트랜잭션 종류와 무관합니다. 이 장에서는 공통 영역들이 어떻게 이더리움 기본 트랜잭션으로써 제공되는지를 기술합니다.
Klaytn의 다양한 수수료 위임 트랜잭션 유형과 상관없이, 공통 영역들이 존재합니다. 이 장은 수수료 위임의 공통 영역(위에서 다룬 공통 영역을 제외하고)이 어떻게 이더리움 기본 트랜잭션으로써 제공되는지를 기술합니다.
Klaytn의 다양한 부분 수수료 위임 트랜잭션 유형과 상관없이, 공통 영역들이 존재합니다. 이 장은 부분 수수료 위임의 공통 영역(위에서 다룬 공통 영역을 제외하고)이 어떻게 이더리움 기본 트랜잭션으로써 제공되는지를 기술합니다.
Klaytn LegacyTransaction은 아래와 같이 Ethereum 기본 트랜잭션으로써 제공됩니다.
Klaytn ValueTransfer Transaction은 아래와 같이 Ethereum 기본 트랜잭션으로써 제공됩니다.
Klaytn ValueTransferMemo Transaction은 아래와 같이 Ethereum 기본 트랜잭션으로써 제공됩니다.
Klaytn SmartContractDeploy Transaction은 아래와 같이 Ethereum 기본 트랜잭션으로써 제공됩니다.
Klaytn SmartContractExecution Transaction은 아래와 같이 Ethereum 기본 트랜잭션으로써 제공됩니다.
Klaytn AccountUpdate Transaction is served as Ethereum Legacy Transaction like below.
Klaytn Cancel Transaction은 아래와 같이 Ethereum 기본 트랜잭션으로써 제공됩니다.
Klaytn ChainDataAnchoring Transaction은 아래와 같이 Ethereum 기본 트랜잭션으로써 제공됩니다.
관련된 APIs: eth_getTransactionReceipt.
기본적으로, Klaytn Transaction Receipt의 영역들은 트랜잭션 유형에 따라 다릅니다. Klaytn에는 많은 트랜잭션 유형이 있기 때문에, 트랜잭션 영수증의 필드들은 트랜잭션 유형에 따라 다릅니다.
eth namespace JSON-RPC apis를 통해 Klaytn 트랜잭션 영수증들을 쿼리할 때, Klaytn 트랜잭션 영수증은 이더리움 트랜잭션 영수증 형식으로 반환될 것입니다.
본 문서에서는 변환 과정을 상세히 기술합니다. (Klaytn 트랜잭션 영수증 -> 이더리움 트랜잭션 영수증).
Regardless of various Klaytn transaction type, there are common fields. (Klaytn 트랜잭션 영수증의 영역들은 트랜잭션 종류에 따라 달라집니다.)
이 장에서는 공통 영역들이 어떻게 이더리움 트랜잭션 영수증으로써 제공되는지를 기술합니다.
Regardless of various Klaytn FeeDelegation transaction type, there are common fields. (Please remind that fields of Klaytn Transaction Receipt are various based on transaction types.)
이 장은 수수료 위임의 공통 영역(위에서 다룬 공통 영역을 제외하고)이 어떻게 이더리움 트랜잭션 영수증으로써 제공되는지를 기술합니다.
Regardless of various Klaytn PartialFeeDelegation transaction type, there are common fields. (Please remind that fields of Klaytn Transaction Receipt are various based on transaction types.)
이 장은 부분 수수료 위임의 공통 영역(위에서 다룬 공통 영역을 제외하고)이 어떻게 이더리움 트랜잭션 영수증으로써 제공되는지를 기술합니다.
Klaytn LegacyTransaction Receipt은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Klaytn ValueTransfer Transaction Receipt은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Klaytn ValueTransferMemo Transaction은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Klaytn SmartContractDeploy Transaction Receipt은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Klaytn SmartContractExecution Transaction Receipt은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Klaytn AccountUpdate Transaction Receipt은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Klaytn Cancel Transaction Receipt은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Klaytn ChainDataAnchoring Transaction Receipt은 아래와 같이 Ethereum 트랜잭션 영수증으로써 제공됩니다.
Please read the description carefully.
The icon in the description denotes that the field used in the same way as in Ethereum.
Ethereum Header Field | Klaytn Header Field | Description |
---|---|---|
Please read the description carefully.
The icon in the description denotes that the field used in the same way as in Ethereum.
Ethereum 기본 트랜잭션 영역 | Klaytn 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn 수수료 위임 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn 부분 수수료 위임 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn 기본 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn ValueTransfer 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn ValueTransferMemo 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn SmartContractDeploy 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn SmartContractExecution 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn AccountUpdate 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn Cancel 트랜잭션 영역 | Description |
---|---|---|
Ethereum Legacy Transaction Field | Klaytn ChainDataAnchoring 트랜잭션 영역 | Description |
---|---|---|
Please read the description carefully.
The icon in the description denotes that the field used in the same way as in Ethereum.
Ethereum 트랜잭션 영수증 영역 | Klaytn 트랜잭션 영수증 영역 | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn FeeDelegation Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn PartialFeeDelegation Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn LegacyTransaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn ValueTransfer Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn ValueTransferMemo Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn SmartContractDeploy Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn SmartContractExecution Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn AccountUpdate Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn Cancel Transaction Receipt Field | Description |
---|---|---|
Ethereum Transaction Receipt Field | Klaytn ChainDataAnchoring Transaction Receipt Field | Description |
---|---|---|
baseFeePerGas
(added)
difficulty
(added)
extraData
extraData
gasLimit
(added)
gasUsed
gasUsed
governanceData(생략됨)
hash
hash
logsBloom
logsBloom
miner
(added)
mixHash
(added)
nonce
(added)
number
number
parentHash
parentHash
receiptsRoot
receiptsRoot
reward(생략됨)
sha3Uncles
(added)
size
size
stateRoot
stateRoot
timestamp
timestamp
timestampFoS(생략됨)
totalDifficulty
(added)
transactionsRoot
transactionsRoot
voteData(생략됨)
uncles
(added)
transactions
transactions
blockHash
blockHash
blockNumber
blockNumber
from
from
gas
gas
gasPrice
gasPrice
hash
hash
input
(covered in below sections)
해당 영역에 대한 설명은 아래의 세부 트랜잭션 항목들에서 다룹니다.
nonce
nonce
senderTxHash(생략됨)
signatures(생략됨)
to
(covered in below sections)
The description of this field is covered in the detailed transaction items below.
transactionIndex
transactionIndex
value
(covered in below sections)
The description of this field is covered in the detailed transaction items below.
type
type(변환됨)
typeInt(생략됨)
v
(added)
r
(added)
s
(added)
feePayer(생략됨)
feePayerSignatures(생략됨)
feeRatio(생략됨)
input
input
to
to
value
value
input
(added)
to
to
value
value
input
input
to
to
value
value
codeFormat(생략됨)
humanReadable(생략됨)
input
input
to
to
value
value
input
input
to
to
value
value
key(생략됨)
input
(added)
to
(added)
value
(added)
input
(added)
to
(added)
value
(added)
input
input
inputJSON(생략됨)
to
(added)
value
(added)
blockHash
blockHash
blockNumber
blockNumber
contractAddress
contractAddress
cumulativeGasUsed
(added)
effectiveGasPrice
(added)
from
from
gas(생략됨)
gasUsed
gasUsed
gasPrice(생략됨)
로그
logs
logsBloom
logsBloom
nonce(생략됨)
senderTxHash(omitted)
signatures(omitted)
상태
status
to
(covered in below sections)
The description of this field is covered in the detailed transaction items below.
transactionHash
transactionHash
transactionIndex
transactionIndex
type
type(converted)
typeInt(omitted)
feePayer(omitted)
feePayerSignatures(omitted)
feeRatio(omitted)
input(생략됨)
to
to
value(생략됨)
to
to
value(omitted)
input(omitted)
to
to
value(omitted)
codeFormat(omitted)
humanReadable(omitted)
input
to
to
value
input
to
to
value
key(omitted)
to
(added)
to
(added)
input(omitted)
inputJSON(omitted)
to
(added)
Klaytn은 baseFeePerGas 스킴을 가지고 있지 않기 때문에, 해당 필드는 항상 0x0
값을 가집니다.
Klaytn 헤더에서 해당 필드는 blockScore
에 해당하며, 0x1
로 값이 고정되어 있습니다. This is because Klaytn's consensus mechanism is not based on PoW, indicating the technical concept of block difficulty is not applicable to Klaytn core.
해당 필드는 빈 값을 나타내며 항상 0x
를 값으로 가집니다. Owing to the fact that Klaytn's extraData
contains consensus data such as validators addresses, validators signatures, and proposer signature, it is not applicable to eth
namespace API.
Klaytn은 GasLimit이 없기 때문에 해당 필드는 임의의 숫자인 0xe8d4a50fff
(=999999999999
in decimal)를 값으로 가집니다. At the time of writing, this figure is 30 times higher than the block gas limit of Ethereum. 더 자세한 내용은 계산 비용를 참조하십시오.
해당 블록의 트랜잭션들에 사용된 총 가스양과 동일한 스칼라 값입니다.
Ethereum 블록 헤더에는 해당 필드가 존재하지 않기 때문에 생략합니다.
블록의 해시입니다.
블록안의 로그들에 대한 블룸 필터입니다. 아직 보류 중인 블록이면 null
입니다.
Klaytn의 합의 메커니즘은 PoW기반이 아니기 때문에, 해당 필드는 항상 zeroHash(0x00...
)를 값으로 가집니다.
Klaytn의 합의 메커니즘은 PoW기반이 아니기 때문에, 해당 필드는 항상 zeroNonce(0x00...
)를 값으로 가집니다.
블록 번호를 가집니다.
부모 블록의 해시값을 가집니다.
블록의 receipts 트라이 루트의 해시입니다.
This field is omitted because this field does not exist in Ethereum Block Header.
Klaytn은 엉클블록이 없기 때문에, 해당 필드는 항상 빈 블록 헤더를 포함하는 목록의 RLP-encoded 바이트의 Keccak256해시인 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347
를 값으로 가집니다.
블록의 바이트 크기입니다.
블록의 상태 트라이의 루트 해시입니다.
블록이 생성되었을 때의 Unix 타임스탬프입니다.
This field is omitted because this field does not exist in Ethereum Block Header.
The total difficulty of the chain until the querying block.
블록의 트랜잭션 트라이의 루트 해시입니다.
Ethereum 블록에는 해당 필드가 존재하지 않기 때문에 생략합니다.
Klaytn core에는 엉클블록에 관한 기술적 개념이 없기 때문에, 해당 필드는 항상 []
을 값으로 가집니다.
트랜잭션 객체의 배열이거나 또는 마지막으로 주어진 매개변수에 따라 32바이트 크기의 트랜잭션 해시입니다.
블록 해시.
블록 번호.
발신자의 주소.
발신자가 지불한 가스.
Klaytn의 맥락에서는 단가로도 알려져 있으며, 해당 값은 거버넌스 프로세스를 통해 시스템에서 결정됩니다.
트랜잭션 해시.
트랜잭션 발신자가 이 트랜잭션 이전까지 전송했던 트랜잭션의 개수입니다.
Ethereum 기본 트랜잭션에는 해당 필드가 존재하지 않기 때문에 생략합니다.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
거의 이더리움과 동일하지만, 이더리움과 다르게 Klaytn은 트랜잭션이 보류 중인 상태에서 그대로 정수를 반환합니다.
Klaytn에서 type
은 트랜잭션 타입을 문자열로 반환하지만 (예: "LegacyTransaction"
), 이더리움과 일치하도록 16진수로 변환되었습니다 (예: 0x0
). Transaction types that are only valid in Klaytn always return 0x0
.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
Klaytn은 다중서명을 지원하므로 Klaytn의 트랜잭션은 하나 이상의 서명을 가질 수 있습니다. signatures[0].V
는 v
영역의 값으로 사용됩니다.
Klaytn supports MultiSig so transaction in Klaytn can have more than one signature. signatures[0].R
은 r
영역의 값으로 사용됩니다.
Klaytn supports MultiSig so transaction in Klaytn can have more than one signature. signatures[0].S
는 s
영역의 값으로 사용됩니다.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
트랜잭션과 함께 전송된 데이터입니다.
발신자의 주소. 컨트랙트 생성 트랜잭션이라면 null
를 반환합니다.
Peb단위로 전송된 값입니다.
해당 필드는 Klaytn ValueTransfer 트랜잭션에 존재하지 않기 때문에, 항상 빈 입력값을 뜻하는 0x
를 값으로 가집니다.
Address of the receiver.
Value transferred in Peb.
The data sent along with the transaction.
Address of the receiver.
Value transferred in Peb.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
The data sent along with the transaction.
Address of the receiver. 컨트랙트 생성 트랜잭션이기 때문에, 해당 필드는 항상 null
을 값으로 가집니다.
Value transferred in Peb.
The data sent along with the transaction.
스마트 컨트랙트의 주소.
Value transferred in Peb.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
해당 필드는 Klaytn AccountUpdate 트랜잭션에 존재하지 않기 때문에, 항상 빈 입력값을 뜻하는 0x
를 값으로 가집니다.
해당 필드는 Klaytn AccoutUpdate 트랜잭션에 존재하지 않고, from
을 필드의 값으로 주는 것이 가장 의미에 부합하기 때문에, from
과 항상 같은 주소를 값으로 가집니다.
해당 필드는 Klaytn AccountUpdate 트랜잭션에 존재하지 않기 때문에, 항상 0x0
을 값으로 가집니다.
해당 필드는 Klaytn Cancel 트랜잭션에 존재하지 않기 때문에, 항상 빈 입력값을 뜻하는 0x
를 값으로 가집니다.
해당 필드는 Klaytn Cancel 트랜잭션에 존재하지 않고, from
을 필드의 값으로 주는 것이 가장 의미에 부합하기 때문에, from
과 항상 같은 주소를 값으로 가집니다.
해당 필드는 Klaytn Cancel 트랜잭션에 존재하지 않기 때문에, 항상 0x0
을 값으로 가집니다.
The data sent along with the transaction.
This field is omitted because this field does not exist in Ethereum Legacy Transaction.
해당 필드는 Klaytn ChainDataAnchoring 트랜잭션에 존재하지 않고, from
을 필드의 값으로 주는 것이 가장 의미에 부합하기 때문에, from
과 항상 같은 주소를 값으로 가집니다.
해당 필드는 Klaytn ChainDataAnchoring 트랜잭션에 존재하지 않기 때문에, 항상 0x0
을 값으로 가집니다.
Block hash.
Block number.
컨트랙트 생성 트랜잭션이면 생성된 컨트랙트의 주소를 반환합니다. 컨트랙트 생성 트랜잭션이 아닌 경우 null
을 반환합니다.
트랜잭션이 블록에서 실행되었을 때 소모한 총 가스의 양. 이더리움 영역과 같은 의미로 제공됩니다.
Klaytn은 고정된 가스 가격 정책을 사용하므로, gasPrice 값을 반환합니다. gasPrice(단가라고도 함)는 거버넌스에 의해 시스템에 설정되어 있습니다.
Address of the sender.
Ethereum 트랜잭션 영수증에는 해당 필드가 존재하지 않기 때문에 생략합니다.
이 트랜잭션에서만 사용된 가스양입니다.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
트랜잭션들에 의해 생성된 로그 객체의 배열입니다.
라이트 클라이언트가 관련된 로그를 빠르게 검색할 수 있도록 하는 블룸필터입니다.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
1(성공) 혹은 0(실패)입니다.
트랜잭션 해시.
Almost same with Ethereum but unlike Ethereum, Klaytn returns integer as it is when its pending.
해당 필드의 값과 데이터 타입은 변환됩니다. Klaytn에서 해당 필드의 타입은 문자열이지만(예. "LegacyTransaction"
), 이더리움 트랜잭션 영수증과 같이 16진수로 변환되어 제공됩니다.(예. 0x
)
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
Address of the receiver. null
when its a contract creation transaction.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
Address of the receiver.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
Address of the receiver.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
Ethereum 트랜잭션 영수증에는 해당 필드가 존재하지 않기 때문에 생략합니다.
Address of the receiver. This field always has value null
because this transaction is a contract creation transaction.
This field is omitted because this field does not exist in Ethereum Transaction Receipt
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
Address of the smart contract.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
해당 필드는 Klaytn AccoutUpdate 트랜잭션 영수증에 존재하지 않고, from
을 필드의 값으로 주는 것이 가장 의미에 부합하기 때문에, from
과 항상 같은 주소를 값으로 가집니다.
해당 필드는 Klaytn Cancel 트랜잭션 영수증에 존재하지 않고, from
을 필드의 값으로 주는 것이 가장 의미에 부합하기 때문에, from
과 항상 같은 주소를 값으로 가집니다.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
This field is omitted because this field does not exist in Ethereum Transaction Receipt.
해당 필드는 Klaytn ChainDataAnchoring 트랜잭션 영수증에 존재하지 않고, from
을 필드의 값으로 주는 것이 가장 의미에 부합하기 때문에, from
과 항상 같은 주소를 값으로 가집니다.