πŸ—‚ μ½”λ”©/☠ Error

[Solidity] TypeError: Contract "" should be marked as abstract.

truthgarnet 2022. 3. 30. 19:30

 

문제 λ°œμƒ

Contract "" should be amrked as abstract의 였λ₯˜λŠ” λ²ˆμ—­ν•˜λ©΄ 계약 ""은 μΆ”μƒμ μœΌλ‘œ ν‘œμ‹œλ˜μ–΄μ•Ό ν•œλ‹€λΌκ³  λ²ˆμ—­ν•  수 μžˆλ‹€. μΆ”μƒμ΄λΌλŠ” 말이 λ‚˜μ™”λ‹€λ©΄, 좔상 λ©”μ„œλ“œ, 좔상 ν΄λž˜μŠ€κ°€ λ– μ˜€λ₯Ό 것이닀. 좔상 ν΄λž˜μŠ€μ™€ 좔상 λ©”μ„œλ“œλ₯Ό 정리해보면, 

좔상 λ©”μ†Œλ“œ : μžμ‹ ν΄λž˜μŠ€μ—μ„œ λ°˜λ“œμ‹œ μ˜€λ²„ λΌμ΄λ”©ν•΄μ•Όλ§Œ μ‚¬μš©ν•  수 μžˆλŠ” λ©”μ„œλ“œ

좔상 클래슀 : ν•˜λ‚˜ μ΄μƒμ˜ 좔상 λ©”μ„œλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” 클래슀

 

λ°œμƒ 이유 : μƒμ†ν•˜λŠ” Contract이 μžˆμ„ λ•Œ Contract에 κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” κΈ°λŠ₯이 μžˆμ„ λ•Œ 였λ₯˜κ°€ λ°œμƒ

 

μ˜ˆμ‹œ

1. μƒμ„±μž ν˜ΈμΆœν•˜μ§€ μ•Šμ•˜μ„ λ•Œ

ERC721을 상속 λ°›μ•˜(is)λ‹€κ³  κ°€μ •ν–ˆμ„ λ•Œ, μƒμ„±μžλ₯Ό κΌ­ ν˜ΈμΆœν•΄μ€˜μ•Ό ν•œλ‹€. 

μƒμ„±μžμΈ contructor() ERC721("GameItem", "ITM") public { }을 μž‘μ„±ν•΄μ€€λ‹€.

contract MyMethod is ERC721{
	constructor() ERC721("GameItem", "ITM") public { }
}

 

2. μƒμ†ν•˜λŠ” function을 μ •μ˜ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ 

pragma solidity ^0.8.9;

interface inheritMe {
    function interitedFunction() external;
}

contract mainContract is inheritMe {
}

μ΄λŠ” inhertiedFunction이 μ •μ˜λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•œλ‹€. inhertiedFunction이 μ •μ˜(define) λ˜μ§€ μ•Šμ•˜λ‹€λ©΄ mainContract λ˜ν•œ μ •μ˜λ˜μ§€ μ•Šμ€(undefined) ν•¨μˆ˜λ‹€.

 

문제 ν•΄κ²°

문제 원인은 좔상 ν•¨μˆ˜κ°€ 무엇인지 μ•ŒκΈ°λ§Œ ν•œλ‹€λ©΄ ν•΄κ²°ν•  수 μžˆλŠ” κ°„λ‹¨ν•œ λ¬Έμ œμ˜€λ‹€. 즉, 좔상 ν•¨μˆ˜λ₯Ό μ •μ˜ν•΄μ£Όλ©΄ λœλ‹€. 

 


μ°Έμ‘° λ¬Έμ„œ

 

Contract should be marked as abstract

I'm getting the error: Contract "StarNotary" should be marked as abstract. pragma solidity >=0.4.24; import "../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol"; contract Star...

ethereum.stackexchange.com