Solidity로 Smart Contract 구축하기1 - Hello Solidity

2022. 8. 26. 12:22Block Chain

Solidity를 공부하면서 D_One님의 유투브를 참고하면서 공부하였습니다.

D_One님의 인프런 무료 강의도 있으니 참고하시면 좋을 것 같습니다.

 

D_One

솔리디티

www.youtube.com

 

이번 포스팅에서는 가장 기본적인 코드를 작성하고, 컴파일, 배포하는 과정을 알아보겠습니다.

Hello Solidity

// SPDX-License-Identifier: GPL-30
pragma solidity >= 0.7.0 < 0.9.0;

contract HelloSolidity {
    string public helloSolidity = "Hello Solidity";
}

License

// SPDX-License-Identifier: GPL-30​

Solidity를 코딩할 때에는 맨 첫 줄에 License에 관한 내용이 반드시 들어가야합니다. 그렇지 않으면 컴파일 했을 때 Warning이 나오게 됩니다. 그 이유는 Blockchain의 특성상 코드를 한번 배포하면 조회는 가능하지만 수정, 삭제가 불가능하기 때문에 License를 나중에 추가할 수 없으므로 처음에 만들 때부터 명시해 줘야합니다.

만약 아무런 License를 명시하고 싶지 않거나 코드가 오픈 소스가 아니라면 GPL-30 대신 UNLICENSED 라고 적으면 됩니다.

또한 Solidity에서 적은 License가 SPDX에 존재하는 License인지 검증하는 과정은 따로 없습니다. 따라서 아무렇게나 적어도 실행하는데 문제가 되진 않지만 실제 서비스를 할 것이라면 지켜주는 것이 좋습니다.

 

추가적으로 Solidity 공식 문서를 보시면 UNLICENSEDUNLICENSE는 다르다고 합니다.

UNLICENSED는 오픈 소스가 아닌 것으로 어떠한 사용도 금지되는 것이고,

UNLICENSE는 모든 권한이 모든 사람에게 허용되는 것입니다.

그리고 Solidity의 이러한 권한들은 SPDX License List에는 나와있지 않으며 npm reommendation을 따릅니다.

 

그 외의 모든 SPDX License와 사용법에 관해서는 아래 사이트에 상세하게 나와있습니다.

 

SPDX License List | Software Package Data Exchange (SPDX)

SPDX License List The SPDX License List is an integral part of the SPDX Specification. The SPDX License List itself is a list of commonly found licenses and exceptions used in free and open or collaborative software, data, hardware, or documentation. The S

spdx.org

 

IDs - Software Package Data Exchange (SPDX)

The examples below are for a language that uses // as its comment delimiter. // SPDX-License-Identifier: MIT The file is under the MIT license. // SPDX-License-Identifier: EPL-1.0+ The file is under the Eclipse Public License version 1.0, or any late

spdx.dev

Compile Version

pragma solidity >= 0.7.0 < 0.9.0;

첫 줄에 License를 명시해주면 다음으로 컴파일 버전을 명시해줘야 합니다. License와 같은 이유로 일단 배포하면 수정할 수 없고, Solidity는 아직도 끊임없이 발전하고 변화하는 언어이기 때문에 컴파일 버전에 대한 명시는 필수적입니다.

 

HelloSolidity

contract HelloSolidity {
	string public helloSolidity = "Hello Solidity";
}

 

저는 Solidity를 하기 전에 Java언어를 주로 사용하여서 처음 보는 코드를 읽는데 크게 무리가 되진 않았습니다. 따라서 프로그래밍 경험이 있는 분이라면 이정도 코드는 이해할 수 있을 것입니다.

다음으로 Hello라는 이름의 contract를 생성해서 그 안에 string 타입의 helloSolidity를 선언하고 초기화하였습니다.

 

변수 타입이나 접근 제한자, 함수 등 여러 가지 문법이 있지만 그런 부분은 다음 포스팅에서 알아보도록 하고, 우선 컴파일과 배포, 그리고 "Hello Solidity"를 출력하는 것에 집중하겠습니다.

Compile

좌측 Solidity Compiler 탭을 클릭하시면 Compile lec1.sol이라는 버튼을 눌러서 컴파일 할 수 있습니다.

코드 작성을 완료하고 ⌘(Command)+s를 눌러서 저장하듯이 컴파일할 수도 있습니다.

참고로 현재 컴파일 버전은 0.8.7이며 코드에서 명시한 컴파일 버전에 부합하므로 정상적으로 컴파일할 수 있습니다.

Deploy

컴파일이 정상적으로 완료되었으면 좌측 Deploy & Run Transactions 탭을 통해 배포할 수 있습니다.

Contract에서 배포할 contract를 선택하는데 현재 HelloSolidity 한 개 밖에 없으므로 이것을 배포하겠습니다.

그리고 Deploy버튼을 눌러서 배포할 수 있습니다.

 

정상적으로 배포가 완료되면 하단에 Deployed Contracts에서 배포된 contract를 확인할 수 있습니다.

Deployed Contracts

확장해보면 helloSolidity라는 버튼이 있는데 눌러보면 우리가 초기화해줬던 "Hello Solidity"가 string 형태로 들어있는 것을 확인할 수 있습니다.

 

여기까지 매우 매우 기본적인 HelloSolidity 코딩이었습니다.

다음 포스팅에서는 Solidity에서 사용하는 변수 타입과 접근제한자에 대해 알아보겠습니다.

 

감사합니다.