혹시 아시는 분이 계시다면 도움을 부탁드립니다.
Kaia와 Kairos에 동일한 바이너리의 컨트랙트를 배포하고 똑같은 input을 주었는데 결과가 달라져서 어려움을 겪고 있습니다.
이 컨트랙트는 내부에서 create2를 사용하는데, Kaia에서 실행 시 가끔 제로 주소가 반환되는 경우가 있어 그 원인을 조사하고 있습니다.
조사에 도움이 될 만한 힌트가 있으면 뭐든지 부탁드립니다.
현재 파악한 사항은 다음과 같습니다.
- Kaia와 Kairos에서 4가지 입력 패턴으로 실행했고, Kaia에서만 2가지 패턴이 제로 주소로 반환됩니다.
- 제로 주소가 나온 input을 다시 시도했지만 여전히 제로 주소가 반환됩니다.
- Ethereum이나 Optimism에서 같은 바이너리로 테스트할 경우 제로 주소가 반환되지 않습니다.
If anyone can help, I’d appreciate your insights.
I’m encountering an issue where deploying the exact same contract binary to both Kaia and Kairos and providing identical input results in different outcomes.
The contract internally uses create2, but when executed on Kaia, it sometimes results in a zero address. I’m currently investigating the cause.
Any hints or advice you could provide would be very helpful.
Here’s what I’ve observed so far:
- Running four input patterns on both Kaia and Kairos, only two patterns result in a zero address exclusively on Kaia.
- Retrying the inputs that previously resulted in a zero address still produces the same outcome.
- Testing the same binary on Ethereum or Optimism never results in a zero address.
Contract code being executed:
contract LogicFactory {
event Created(address indexed addr);
function deployByCreate2(
bytes memory code,
uint256 salt,
bytes calldata data
) external returns (address) {
address addr;
// solhint-disable-next-line no-inline-assembly
assembly {
addr := create2(0, add(code, 0x20), mload(code), salt)
if iszero(extcodesize(addr)) {
revert(0, 0)
}
}
if (data.length > 0) {
(bool success, ) = addr.call(data);
if (!success) {
// solhint-disable-next-line no-inline-assembly
assembly {
returndatacopy(0, 0, returndatasize())
revert(0, returndatasize())
}
}
}
emit Created(addr);
return addr;
}
}
Tx resulting in zero address on Kaia: Kaiascope.com
Kairos Tx: TESTNET Kairos (KAIA) Blockchain Explorer - KaiaScan