CompilerError: Stack too deep when compiling inline assembly: Variable value0 is 3 slot(s) too deep inside the stack.
Error HH600: Compilation failed
Solidity를 코딩하다가 위와 같은 이유로 에러를 만났습니다.
이유는 아래 코드 때문인데요.
function hashOrder(Order memory order) public pure returns (bytes32 hash) {
return
keccak256(
abi.encode(
ORDER_TYPEHASH,
order.exchange,
order.maker,
order.taker,
order.saleSide,
order.saleKind,
order.target,
order.paymentToken,
keccak256(order.calldata_),
keccak256(order.replacementPattern),
order.basePrice,
order.endPrice,
order.listingTime,
order.expirationTime,
order.salt
)
);
}
abi.encode 내부에 parameters가 여러개가 포함되는데, 컴파일시 내부적으로 이 파라미터들이 Stack에 쌓이게 되는데 총 16개 이상 넘어 갈 수 없게 되어 있다고 합니다.
그래서 이러한 경우 abi.encodePacked를 이용하여 아래와 같이 쪼갤 수가 있습니다.
function hashOrder(Order memory order) public pure returns (bytes32 hash) {
return
keccak256(
abi.encodePacked(
abi.encode(
ORDER_TYPEHASH,
order.exchange,
order.maker,
order.taker,
order.saleSide,
order.saleKind,
order.target,
order.paymentToken,
keccak256(order.calldata_),
keccak256(order.replacementPattern)
),
abi.encode(
order.basePrice,
order.endPrice,
order.listingTime,
order.expirationTime,
order.salt
)
)
);
}
이것으로 위 Compiler Error은 해결 완료!!
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
[by @happyberrysboy] [Solidity] CompilerError: Stack too deep when compiling inline assembly 조치방법
https://www.steemit.com/@kr-dev.cu0/happyberrysboy-posting-2023-01-06-16-03
@kr-dev.cu0님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
This post has been upvoted by @italygame witness curation trail
If you like our work and want to support us, please consider to approve our witness
Come and visit Italy Community
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
랜덤추천작가와 관심작가(2023-01-10)
https://www.steemit.com/@veryhappyday/-2023-01-10
@veryhappyday님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
랜덤추천작가와 관심작가(2023-01-11)
https://www.steemit.com/@veryhappyday/-2023-01-11
@veryhappyday님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Very good content !
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit